DamienKarrus’s blog

プログラミングとクライミングの足跡

コンテナにログインする docker入門-4

-dit オプションについて

-d デタッチ バックグラウンドで実行する

-i インタラクティブ 標準入出力をコンテナに連結する

-t ターミナル(端末)を割り当てる

デタッチ←→アタッチの切り替え方法

アタッチ状態で ctrl+P 、ctrl+Q を順に打つ

デタッチ状態で docker container attach

 

コンテナに入り込む

(1)m-apache-appが存在しない状態で

※ps -a で m-apache-app が存在しない状態で

$ docker run -it --name my-apache-app httpd:2.4 /bin/bash

コンテナがアタッチモードで起動される。

※-itオプションが最初にないとctrlキーが効かない

実行すると、プロンプトが

root@15ab6f08e163:/usr/local/apache2#

のように変化する。lsするとapache2以下のファイルが表示される

ctrl+P 、ctrl+Q を順に打つとデタッチされ、ホスト側のコマンドプロンプトが返ってくる。

$ docker container ps -a

で、コンテナが稼働中であることがわかる

再びコンテナに入る

$ docker container attach my-apache-app

※caught SIGWINCH, shutting down graceffully と出てしまうことがある。これはhttpdコンテナがデタッチ/アタッチに対してそのような仕様になっているためで、操作的な問題ではない。

(2)コンテナが稼働している状態で

コンテナをデタッチモードでコンテナを起動しておく

$ docker run  -dit --name my-apache-app -p 8080:80 -v "$PWD":/usr/local/apache2/htdocs/ httpd:2.4

execコマンドでbashを起動する

$ docker container exec -it my-apache-app /bin/bash

プロンプトが変わりコンテナに入ることができた

bashを終了する

# exit

コンテナの状態を確認すると、コンテナは稼働中であることがわかる

$ docker container ps
CONTAINER ID   IMAGE       COMMAND              CREATED          STATUS          PORTS                                   NAMES
6ee4986d3d70   httpd:2.4   "httpd-foreground"   39 minutes ago   Up 39 minutes   0.0.0.0:8080->80/tcp, :::8080->80/tcp   my-apache-app

run と exec の違い

run コンテナ停止時に使用 終了時はコンテナ終了

exec コンテナ稼働時に使用 終了時もコンテナは稼働のまま

 

次の記事

コンテナからデータを分離させる docker入門-5 - DamienKarrus’s blog (hatenablog.com)