Docker Containerへの接続

概要

Dockerイメージを実行した後、コンテナの中に入って確認や作業を行う必要がある場合がある。
ここではDocker Containerへ接続する方法について紹介する。

テストコンテナの実行

まず、テストするコンテナを実行する。

% docker run --name nginx-server -d -p 80:80 nginx

既に実行中のコンテナがある場合は、そのコンテナを使用しても問題ない。

実行中コンテナ一覧の確認

現在実行中のコンテナ一覧を確認する。

% docker ps
CONTAINER ID   IMAGE             COMMAND                  CREATED             STATUS             PORTS                    NAMES
7346db27830e   nginx             "/docker-entrypoint.…"   23 seconds ago      Up 22 seconds      0.0.0.0:80->80/tcp       nginx-server

コンテナに接続する

上で確認した接続したいコンテナの CONTAINER ID または NAMES を入力して接続すればよい。

コンテナには CONTAINER ID で接続できる。

% docker exec -it 7346db27830e /bin/bash
root@7346db27830e:/#

または、NAMES で接続できる。

% docker exec -it nginx-server /bin/bash
root@7346db27830e:/#

exec コマンドは、Dockerコンテナ内でコマンドを送信するときに使用される。このとき、コマンドに /bin/bash を引数として入れると、Dockerコンテナ内にあるbashシェルが実行される。
接続とは結局Linuxのシェルを使用するという意味であり、この方式でコンテナに接続できる。

コンテナ接続の終了

コンテナから接続を終了するには、exit コマンドを使用すればよい。

% docker exec -it 7346db27830e /bin/bash
root@7346db27830e:/# exit
exit

/bin/sh で接続する

Dockerイメージによっては /bin/bash コマンドがない場合があり、その場合は次のように接続できないこともある。

% docker exec -it 2910a51bdaf7 /bin/bash
OCI runtime exec failed: exec failed: unable to start container process: exec: "/bin/bash": stat /bin/bash: no such file or directory: unknown

このような場合は、/bin/sh でコンテナへの接続を試してみよう。

docker exec -it 285c3f2a0024 /bin/sh