起動中の Docker コンテナに別ターミナルでアクセスする

あるターミナルから $ docker attach コマンドでコンテナに接続し、サーバプロセスを起動させた。すると、そのターミナルはサーバが起動しっぱなしになるので、他のコマンドを叩いたりできなくなってしまう。

そこで別のターミナルを開いて、再度 $ docker attach コマンドを叩くと、先程のターミナルと同じシェルに入ってしまい、上手く叩けないのだ。

起動中のターミナルとは別のターミナルで Docker コンテナにアクセスするには、$ docker exec コマンドを使う。

# 起動中のコンテナの `CONTAINER ID` を調べる
$ docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                    NAMES
6d9896206501        centos:7            "bash"              18 hours ago        Up 18 hours         0.0.0.0:8080->8080/tcp   my_centos_container

# 先程の `CONTAINER ID` を指定して bash に接続する
$ docker exec -it 6d9896206501 bash

# ログイン後。別ターミナルで動かしているプロセスも確認できる
$$ ps aux

Docker はサブコマンドが多くてつらみ。