#環境
- MBP
- Catalina
- Docker for Mac
#Nginxコンテナの起動
-dit とすることで最初はバックグラウンドで起動。
- -d detachの意。はバックグラウンドで起動するオプション
- -i Interactiveの意。標準入出力と標準エラー出力をコンテナにつなぐ
- -t 恐らくttyの意。擬似端末を割り当てる、キーボードとモニターを接続する為のオプションと思うと良い。
% docker run -dit -p 8000:80 nginx
Unable to find image 'nginx:latest' locally
latest: Pulling from library/nginx
6f28985ad184: Pull complete
29f7ebf60efd: Pull complete
879a7c160ac6: Pull complete
de58cd48a671: Pull complete
be704f37b5f4: Pull complete
158aac73782c: Pull complete
Digest: sha256:d2925188effb4ddca9f14f162d6fba9b5fab232028aa07ae5c1dab764dca8f9f
Status: Downloaded newer image for nginx:latest
293061505e4dd0c96897c80cdef2231bb76db50c21b516ae8f326592cdd0d1bb
#フォアグラウンドへの切り替え
docker attach で切り替えが可能である。
コマンド実行後にブラウザ側のページをリロードしてログが出力されること(フォアグラウンド)で動いていることを確認。
% docker attach 293061505e4d
172.17.0.1 - - [12/Mar/2021:15:08:11 +0000] "GET / HTTP/1.1" 304 0 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.150 Safari/537.36" "-"
172.17.0.1 - - [12/Mar/2021:15:08:13 +0000] "GET / HTTP/1.1" 304 0 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.150 Safari/537.36" "-"
#バックグラウンドへの切り替え
Ctrl + p Ctrl +q を順番に押下する。
尚、この操作は -i -t のオプションがないと受け付けられない。
これは -i -t のオプションがないとCtrlキーの操作が受け付けられない為である。
docker attach 293061505e4d
172.17.0.1 - - [12/Mar/2021:15:08:11 +0000] "GET / HTTP/1.1" 304 0 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.150 Safari/537.36" "-"
172.17.0.1 - - [12/Mar/2021:15:08:13 +0000] "GET / HTTP/1.1" 304 0 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.150 Safari/537.36" "-"
read escape sequence
%
「read escape sequence」と表示されてプロンプトが返ってきた。
docker psを見てみるとSTATUSが「UP」となっており、ブラウザをリロードしてもNginxの初期ページが表示される事が確認できる。
% docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
293061505e4d nginx "/docker-entrypoint.…" 15 minutes ago Up 15 minutes 0.0.0.0:8000->80/tcp modest_diffie
#「 -i -t 」オプションについて
-i オプションを指定しない場合
標準入出力と標準エラー出力をコンテナをつなぐオプションである。
ファイルからの入力をコンテナで実行されるコマンドに渡したいときなどに必要になる
また、こちらのオプションがないとNginxのログも出力されないし、ホストからのキー入力をしても効きません。
...って本には書いてたけど、検証したらふつうにログ出力されました。
そういう設定になっているのかしら?謎です。
ホスト側でプロセスを終了(Ctrl + c)することは可能です。
-t オプションについて
擬似端末を割り当てる、キーボードとモニターを接続する為のオプションと思うと良い。
CtrlやESCなどをカーソルなどの操作を受け付けないそうです。
Ctrlを使えないため、attachからdetachに切り替えることが出来ません。
#TIPS
apache(httpd)の場合は再アタッチ出来ない仕様らしい。