いつの間にか復活している君
はじめに
作問者のabeです. 実はこの問題は史実に基づいて作られた問題です.
回答を見ていると私と同じ罠に引っかかったチームが居て嬉しかったです(?).
問題文
部長さんへ
新米エンジニアの捕鯨太郎です。 プロジェクトでWEBサーバを構築するとのことなので、 docker-composeを使用してWEBサーバを構築しました。 無事に起動し、WEBページも確認できたのですが、 再起動するとアクセスできなくなってしまいました。
自動的に再起動するように記述してあるので不可解です。 しかも、トラブルシュートしているといつの間にか アクセスできるようになります。自分には原因がわかりません。
お知恵を拝借したいのですが、 お時間をいただけないでしょうか。
前提条件
- ~/web-server/docker-compose.ymlがあり編集可能
- docker ps -aなどで確認するとコンテナが起動している
初期状態
踏み台から $ curl 192.168.17.1
をしても応答がない
終了状態
再起動しても踏み台から $ curl -I 192.168.17.1
をするとステータスコード200のレスポンスが返ってくる
答え
まずは初期状態を確認しましょう.
~ curl 192.168.17.1
curl: (7) Failed to connect to 192.168.17.1 port 80: Connection refused
WEBページにアクセスできないのが確認できます. 次にコンテナの様子をみてみましょう.
user@docker:~$ sudo docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
4e7db3e7cc97 nginx:latest "/docker-entrypoint.…" 3 minutes ago Up Less than a second 0.0.0.0:80->80/tcp web-server_nginx_1
あれあれ,起動しているな…
もう一度確認すると… いつの間にか復活してる!!!
~ curl 192.168.17.1 -I
HTTP/1.1 200 OK
Server: nginx/1.19.6
Date: Sun, 07 Mar 2021 03:33:11 GMT
Content-Type: text/html
Content-Length: 612
Last-Modified: Tue, 15 Dec 2020 13:59:38 GMT
Connection: keep-alive
ETag: "5fd8c14a-264"
Accept-Ranges: bytes
確認作業を行っているうちに復活してしまいました.
実はdockerコマンドを叩くとデーモンが起動する
という罠があります.先ほどのdocker ps -a
を見てみるとUp Less than a second
とあり,起動したてなのがわかります.
以下のコマンドで確認するとデーモンは起動していますが,enableになっていない事がわかります.
ictsc@docker:~$ systemctl status docker
● docker.service - Docker Application Container Engine
Loaded: loaded (/lib/systemd/system/docker.service; disabled; vendor preset: enabled)
Active: active (running) since Sun 2021-03-07 12:32:53 JST; 9min ago
TriggeredBy: ● docker.socket
Docs: https://docs.docker.com
Main PID: 2176 (dockerd)
Tasks: 17
Memory: 114.7M
CGroup: /system.slice/docker.service
├─2176 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
└─2362 /usr/bin/docker-proxy -proto tcp -host-ip 0.0.0.0 -host-port 80 -container-ip 172.18.0.2 -container-port 80
ictsc@docker:~$ systemctl is-enabled docker
disabled
そう,enableのし忘れですね.以下のコマンドで解決です.
systemctl enable docker
採点基準
docker
サービスをenable
できたか.
おわりに
前提条件に書いた2点,docker-compose.yml
が編集可能である,docker ps -a
すると起動している, に引っかかってくれたチームがいて嬉しかったです.
冷静に確認されると一瞬で解決してしまう問題なので簡単枠で出題しました.