コンテナにログインする 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)