Error: can only create exec sessions on running containers [SOLVED]


Docker

The error message "Error: can only create exec sessions on running containers: container state improper" typically occurs when you try to execute a command inside a Docker container using docker exec but the container is not in the correct state to accept commands. This usually means that the container is not running.

# docker run -td --name test_image custom-docker-releases.repo3.cci.dummy.net/build_centos8_rocky:latest
312b0fc5642a7670a2c3ee9561880f62320dc4587ee7683fefbe3237af978a10

# docker exec -ti test_image bash
Error: can only create exec sessions on running containers: container state improper

 

Understanding Docker Containers State

Docker containers can be in several different states, each indicating a specific stage in their lifecycle. You can inspect the state of a container using commands like docker ps for running containers and docker ps -a for all containers, including those not running.

Here's a detailed explanation of each state:

  • Created: The container has been created but not started. It's initialized and ready to run but is not executing any processes yet.
  • Running: The container is actively running. Its main process is operational, and it's capable of executing commands and tasks.
  • Paused: The container's processes are temporarily halted. It's in a suspended state, conserving resources without stopping completely.
  • Exited: The container has stopped running. This happens after its main process completes or if the container is manually stopped.
  • Restarting: The container is in the process of stopping and then starting again, usually triggered by a container restart policy.
  • Dead: The container is in a non-functional state, often due to system errors or issues in the Docker daemon that prevent it from being managed properly.
  • Removing: The container is in the process of being removed from the system. This is a transitional state during the deletion process.

 

Common Reasons for the Error

When dealing with the error "Error: can only create exec sessions on running containers: container state improper," there are several common reasons why this issue might occur.

  • The container has stopped or crashed. This could be due to the main process inside the container exiting or due to an error during container startup.
  • The container is paused. When a container is paused, all its processes are also paused, and it cannot accept new commands.
  • The container is in the process of starting up but not fully running yet.

 

How to Resolve "Error: can only create exec sessions on running containers"

  • Check Container Status: First, check the status of the container using docker ps -a. Look for the container in question and check its status.
  • Start the Container: If the container is not running, start it with docker start [container_name_or_id].
  • Unpause the Container: If the container is paused, unpause it using docker unpause [container_name_or_id].
  • Keep the Container Running: Set an entrypoint and provide a custom command to keep the command running [docker run --entrypoint /bin/bash container_name_or_id -c "sleep 999999"]

In my case I went ahead with setting my custom entrypoint and adding sleep command to keep the container running:

docker run --entrypoint /bin/bash  custom-docker-releases.repo3.cci.dummy.net/build_centos8_rocky:latest -c "sleep 999999"

Next verify if docker process is running

~]# docker ps
CONTAINER ID  IMAGE                                                                   COMMAND               CREATED      STATUS          PORTS                                                            NAMES
....
d7bb60af1cfc  custom-docker-releases.repo3.cci.dummy.net/build_centos8_rocky:latest  -c sleep 999999       5 hours ago  Up 5 hours ago                                                                   nice_stonebraker

Next connect to the container image

~]# docker exec -ti d7bb60af1cfc bash
[root@d7bb60af1cfc /]#

Once you are done, kill the process

~]# docker kill d7bb60af1cfc

 

Summary

The article provides a comprehensive guide on resolving the error "Error: can only create exec sessions on running containers: container state improper," commonly encountered in Docker. This error typically occurs when an attempt is made to execute a command in a Docker container that isn't in a 'running' state. The article emphasizes that Docker containers need to be in a running state to accept exec commands, with other states like 'created', 'paused', or 'exited' leading to this issue. It outlines the common causes for this error, including scenarios where a container has stopped, crashed, is paused, or is still initializing. Incorrect container identifiers or Docker daemon issues can also trigger this problem.

To troubleshoot, the article suggests checking the container's state using docker ps -a. If the container is not running, it can be started with docker start. For paused containers, docker unpause is the solution. In cases where containers stop or crash immediately upon starting, checking the logs with docker logs is recommended for insights. The article also underscores the importance of proper container configuration, adequate system resources, and using a stable Docker version. Additionally, it proposes a practical solution for keeping a container in a running state: using docker run with an overridden entrypoint to execute a prolonged sleep command, like docker run --entrypoint /bin/bash image_name -c "sleep 999999". This approach is especially useful for scenarios requiring the container to remain active for extended periods, such as during debugging or development phases. Overall, the article serves as a valuable resource for effectively managing and resolving state-related issues in Docker containers.

 

Deepak Prasad

Deepak Prasad

He is the founder of GoLinuxCloud and brings over a decade of expertise in Linux, Python, Go, Laravel, DevOps, Kubernetes, Git, Shell scripting, OpenShift, AWS, Networking, and Security. With extensive experience, he excels in various domains, from development to DevOps, Networking, and Security, ensuring robust and efficient solutions for diverse projects. You can connect with him on his LinkedIn profile.

Can't find what you're searching for? Let us assist you.

Enter your query below, and we'll provide instant results tailored to your needs.

If my articles on GoLinuxCloud has helped you, kindly consider buying me a coffee as a token of appreciation.

Buy GoLinuxCloud a Coffee

For any other feedbacks or questions you can send mail to admin@golinuxcloud.com

Thank You for your support!!