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