Shell into swarm container

Andi Jay picture Andi Jay · Oct 10, 2016 · Viewed 10.2k times · Source

I'm unable to connect to a container that's running on a swarm. Seems like the following doesn't work:

docker exec -it <container_ID> bash

Here is some output:

>$ docker service ls
ID            NAME          REPLICAS  IMAGE                              COMMAND
4rliefwe74o5  login         1/1       login-arm64:1.0


>$ docker service ps login
ID                         NAME     IMAGE                       NODE               DESIRED STATE  CURRENT STATE          ERROR
2jk3s2xs7ce62piunbkiptypz  login.1  login-arm64:1.0  odroid64-cluster4  Running        Running 5 minutes ago

Then I'll run:

$ docker exec -it 2jk3s2xs7ce62piunbkiptypz bash

or

$ docker exec -it login.1 bash

and see the following errors

Error response from daemon: No such container: 2jk3s2xs7ce62piunbkiptypz

Error response from daemon: No such container: login.1

Answer

Sam Myers picture Sam Myers · Oct 11, 2016

Use docker ps to find the names you can use. Look under both CONTAINER ID and NAMES, either will work.

>$ docker ps
CONTAINER ID        IMAGE             COMMAND                  CREATED             STATUS              PORTS               NAMES
e53bff8bebfc        login-arm64:1.0   "/bin/sh -c 'node ser"   27 seconds ago      Up 25 seconds                           login.1.cg7fltcu3wfe7ixtnqzg8myy1

>$ docker exec -it e53bff8bebfc bash
root@e53bff8bebfc:/#

The long name is of the form $SERVICE_NAME.$REPLICA_NUMBER.$ID_FROM_SERVICE_PS

>$ docker exec -it login.1.cg7fltcu3wfe7ixtnqzg8myy1 bash
root@e53bff8bebfc:/#