起動中のDockerコンテナに接続する
Docker
Published: 2020-12-09

やったこと

起動中のDockerコンテナに、別タブから接続します。

確認環境

$ docker --version
Docker version 19.03.13, build 4484c46d9d

調査

使うイメージ

$ docker image ls | grep ruby | grep 2.5
ruby                                 2.5                                                                875fc97a76ff        2 weeks ago         843MB

コンテナ起動

タブ1

$ docker container run \
> -d \
> --name abc_container \
> -h host1 \
> -it \
> ruby:2.5 \
> /bin/bash
c5fd47fd970256a98c9fb9ed1c95f68e5129a3571e0a874b04a5ebbcb6d03b04

$ docker container ls -a | grep abc
c5fd47fd9702        ruby:2.5              "/bin/bash"              9 seconds ago       Up 8 seconds                                   abc_container

docker container exec で接続

タブ2

$ docker container exec -it abc_container bash
root@host1:/#

docker container --help より

exec Run a command in a running container

docker container attach で接続

タブ3

$ docker container attach abc_container
root@host1:/#

docker container --help より

attach Attach local standard input, output, and error streams to a running container

おまけ

status が Exitのコンテナを削除する

$ docker container ls -a | grep container | grep ruby
28b447b3bbdc        ruby:2.5              "/bin/bash"              4 minutes ago       Exited (0) About a minute ago                              abc_container
eb715bbaf632        ruby:2.5              "/bin/bash"              10 minutes ago      Exited (130) 10 minutes ago                                tmp01_container
$ docker container prune
WARNING! This will remove all stopped containers.
Are you sure you want to continue? [y/N] y
Deleted Containers:
28b447b3bbdc414b288d2766bf87f2f41349d694b817ec6a5f650428b92426ac
eb715bbaf6322a08b6f591090bc9d70498b4832a6b0301a4297bff3425575627

Total reclaimed space: 10B

最後に

docker container execdocker container attach は何が違うのでしょうか。

docker container attach から exit すると別タブも exit されることだけ確認できました。

exec はコマンドを渡せるので、bashで入ったり、zshで入ったり出来るようになるの良いのかもしれませんね。