0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

稼働中のコンテナのシェルに入りたい~attachとexecの違い~

Last updated at Posted at 2019-11-29

###環境

・windows 10
・Docker version 19.03.5

#目的とゴール
・attachとexecの違いが分かるようになる
・起動中のコンテナのシェルに入れるようになる

#attachとexecの違い
###attach

稼働中のコンテナに入るコマンド。
コンテナで実行中のプロセスが開始される。
つまり、docker psで表示されるCOMMANDのコマンドが実行される。

###exec

現在稼働しているコンテナで新たなプロセスを開始できるコマンド。
シェルに入りたい場合は下記コマンドを実行する。
docker exec -it XXXXXXXXXX /bin/bash

つまり稼働中のシェルに入りたい場合は、
①docker psでCOMMANDが/bin/bashの場合
②それ以外の場合

の2パターンに分かれることになります。

#パターン1:docker psでCOMMANDが/bin/bashの場合

docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
72a12e05690c        ubuntu              "/bin/bash"         29 hours ago        Up 8 seconds                           hungry_bassi

実行中のプロセスは/bin/bashとなります。
こういう時はattachしてあげればシェルに入れます。

> docker attach 72a12e05690c
root@72a12e05690c:/#  

ちなみにSTATUSがExitedの場合は、docker start -ai XXXXXXXXで入れますね。
attachはあくまで稼働中のコンテナのプロセスに入るものであって、止まっているものについては再度スタートしてあげる必要があります。

#パターン2:それ以外の場合

docker psでCOMMANDが/bin/bash以外の場合はどうでしょうか。

>docker ps -a
CONTAINER ID        IMAGE               COMMAND              CREATED             STATUS                      PORTS                NAMES
205974b714d2        httpd               "httpd-foreground"   20 hours ago        Up 5 seconds                0.0.0.0:80->80/tcp   nostalgic_maxwell

この場合、attachしてもダメです。
稼働中のコンテナのコマンドは"httpd-foreground"であって、シェルではないからです。

こういう時はexecコマンドを使って新たにプロセスを開始します。
/bin/bashを指定してあげるわけです!

>docker exec -it 205974b714d2 /bin/bash

#おまけ:稼働中"ではない"コンテナのシェルに入るには

###パターン1 そもそもコンテナがない場合

docker run -it 【コンテナID】/bin/bash 

/bin/bashを指定して、イメージから新たに立ち上げてあげればいいですね。

###パターン2 コンテナがあるが、Exitedの場合

docker start -ai 【コンテナID】

スタートしてあげる必要がありますね。
もちろんCOMMAND/bin/bashであることが前提となります。

COMMAND/bin/bash以外の場合には、一旦スタートしてその後
docker exec -it XXXXXXXXXX /bin/bash
でシェルに入りましょう!

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?