Our website is made possible by displaying online advertisements to our visitors. Please consider supporting us by disabling your ad blocker.

Connecting To A Detached Docker Container For Terminal Interaction

TwitterFacebookRedditLinkedInHacker News

When I use Docker, most of the time I start my containers in detached mode, meaning that the container will deploy in the background without any further interaction from myself. However, every once in a while I find myself needing to connect to the container to view log information.

So how do you connect to a detached container that is already running? We’re going to take a look at how to do this with minimal effort.

Let’s assume you have Docker installed and we want to deploy a Debian container. Typically you would accomplish this by executing the following:

docker pull debian:latest
docker run -d debian

In the above, we are using only the basic settings without any networking or port definitions. Those things are out of the scope of this guide.

If you execute the following command you’ll notice that the container is not running:

docker ps

This is because this particular container will just terminate after it runs. We can connect to it during deployment, but we won’t be able to connect to it in interactive mode if it starts as detached.

If we wish to connect to it in interactive mode at deployment we would run the following instead:

docker run -it debian

So the above command will deploy the container in interactive mode and keep it running until you exit interactive mode, but that isn’t really what we were originally after. We want to connect to a container that is currently detached.

For this, we need an image that doesn’t terminate as soon as it runs. There are many images like this and you can certainly create your own. Off the top of my head, the Couchbase Docker image will run continuously until stopped.

Let’s execute the following:

docker pull couchbase/server:latest
docker run -d couchbase/server

The above commands will run a Couchbase NoSQL database in detached mode. To find the container id, execute the following command:

docker ps

With the container id in hand, execute the following to connect to it in interactive shell mode:

docker exec -it 6aac37d314b1 bash

At this point you should be controlling the container via your Command Prompt or Terminal. When you exit from interactive mode, this particular container will still be running until we stop it.

Not too bad right? You now have the knowledge to take more control of your Docker containers.

A video version of this article can be seen below.

Nic Raboy

Nic Raboy

Nic Raboy is an advocate of modern web and mobile development technologies. He has experience in C#, JavaScript, Golang and a variety of frameworks such as Angular, NativeScript, and Unity. Nic writes about his development experiences related to making web and mobile development easier to understand.