LoginSignup
0
2

More than 3 years have passed since last update.

Nginxコンテナのバックグラウンドとフォアグラウンドの切り替え

Last updated at Posted at 2021-03-12

環境

  • 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

image.png

フォアグラウンドへの切り替え

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

image.png

「 -i -t 」オプションについて

-i オプションを指定しない場合

標準入出力と標準エラー出力をコンテナをつなぐオプションである。
ファイルからの入力をコンテナで実行されるコマンドに渡したいときなどに必要になる
また、こちらのオプションがないとNginxのログも出力されないし、ホストからのキー入力をしても効きません。
...って本には書いてたけど、検証したらふつうにログ出力されました。
そういう設定になっているのかしら?謎です。

ホスト側でプロセスを終了(Ctrl + c)することは可能です。

-t オプションについて

擬似端末を割り当てる、キーボードとモニターを接続する為のオプションと思うと良い。
CtrlやESCなどをカーソルなどの操作を受け付けないそうです。
Ctrlを使えないため、attachからdetachに切り替えることが出来ません。

TIPS

apache(httpd)の場合は再アタッチ出来ない仕様らしい。

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