TL;DR
sudo systemctl restart docker
を実行したら治った
原因まではわからん(分かる人教えて)
環境とか
Ubuntu:20.04.1 LTS (Focal Fossa)
Docker version 19.03.8
経緯
サーバを再起動し,sudo docker ps
したら何も表示されなかった.
しかし,Docker上で動かしているwebアプリ(Jenkins,Jellyfin)にはweb経由でアクセスできた.
コマンド実行結果
sudo docker ps
⚓ ~/docker sudo docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
前述の通り,実行中のコンテナは無いことになっています.
sudo docker ps -a
⚓ ~/docker sudo docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
7220a06e6d91 jellyfin/jellyfin "/jellyfin/jellyfin" 2 months ago Created jellyfin_jellyfin_1
-aオプションをつけると,jellyfinのコンテナのみ表示されます.(Jenkinsはどうして表示されないんだ...?)
sudo docker images
⚓ ~/docker sudo docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
jellyfin/jellyfin latest 360585541fa2 3 months ago 490MB
imageもjellyfinのもののみです
sudo docker container ls -a
⚓ ~/docker sudo docker container ls -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
7220a06e6d91 jellyfin/jellyfin "/jellyfin/jellyfin" 2 months ago Created jellyfin_jellyfin_1
containerもjellyfinのみです
lsof -i:9090
⚓ ~/docker lsof -i:9090
そこで,9090番portで動いているJenkinsを探しましたが,dockerがroot権限で動いているのでsudoをつける必要がありました.
sudo lsof -i:9090
⚓ ~/docker sudo lsof -i:9090
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
docker-pr 2576 root 4u IPv6 36060 0t0 TCP *:9090 (LISTEN)
当然といえば当然ですが,動いていました.
sudo ps -aux | rg docker
⚓ ~/docker sudo ps -aux|rg docker
(一部省略)
root 2576 0.0 0.0 548248 2876 ? Sl 00:12 0:00 /usr/bin/docker-proxy -proto tcp -host-ip 0.0.0.0 -host-port 9090 -container-ip 172.19.0.2 -container-port 8080
root 2595 0.0 0.0 548248 2844 ? Sl 00:12 0:00 /usr/bin/docker-proxy -proto tcp -host-ip 0.0.0.0 -host-port 8920 -container-ip 172.18.0.2 -container-port 8920
root 2608 0.0 0.0 548504 2988 ? Sl 00:12 0:00 /usr/bin/docker-proxy -proto tcp -host-ip 0.0.0.0 -host-port 8096 -container-ip 172.18.0.2 -container-port 8096
root 2620 0.0 0.0 548248 3580 ? Sl 00:12 0:00 /usr/bin/docker-proxy -proto udp -host-ip 0.0.0.0 -host-port 7359 -container-ip 172.18.0.2 -container-port 7359
root 2633 0.0 0.0 548248 3588 ? Sl 00:12 0:00 /usr/bin/docker-proxy -proto udp -host-ip 0.0.0.0 -host-port 1900 -container-ip 172.18.0.2 -container-port 1900
今度は,docker関連のプロセスを調べてみました.
するとdocker-proxyというものがportを掴んでいることが判明しました.
sudo killall docker-proxy
⚓ ~/docker sudo killall docker-proxy
なので,docker-proxyをkillしました.
今思えばこの手順は必要なかった気がします.
sudo ps -aux | rg docker (2回目)
⚓ ~/docker sudo ps -aux|rg docker
root 2576 0.0 0.0 0 0 ? Z 00:12 0:00 [docker-proxy] <defunct>
root 2595 0.0 0.0 0 0 ? Z 00:12 0:00 [docker-proxy] <defunct>
root 2608 0.0 0.0 0 0 ? Z 00:12 0:00 [docker-proxy] <defunct>
root 2620 0.0 0.0 0 0 ? Z 00:12 0:00 [docker-proxy] <defunct>
root 2633 0.0 0.0 0 0 ? Z 00:12 0:00 [docker-proxy] <defunct>
killしたので一応確認するとdefunctになっていて,プロセス自体は生きていました.
ここで再起動することを思いつく...
sudo systemctl status docker(再起動する前)
⚓ ~/docker sudo systemctl status docker
● docker.service - Docker Application Container Engine
Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
Active: active (running) since Sun 2020-12-06 00:13:05 JST; 1h 57min ago
TriggeredBy: ● docker.socket
Docs: https://docs.docker.com
Main PID: 1479 (dockerd)
Tasks: 20
Memory: 117.9M
CGroup: /system.slice/docker.service
└─1479 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
sudo systemctl status docker(再起動後)
● docker.service - Docker Application Container Engine
Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
Active: active (running) since Sun 2020-12-06 02:11:14 JST; 3s ago
TriggeredBy: ● docker.socket
Docs: https://docs.docker.com
Main PID: 14690 (dockerd)
Tasks: 50
Memory: 42.9M
CGroup: /system.slice/docker.service
├─14690 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
├─14884 /usr/bin/docker-proxy -proto tcp -host-ip 0.0.0.0 -host-port 8920 -container-ip 172.18.0.2 -container-port 8920
├─14898 /usr/bin/docker-proxy -proto tcp -host-ip 0.0.0.0 -host-port 8096 -container-ip 172.18.0.2 -container-port 8096
├─14911 /usr/bin/docker-proxy -proto udp -host-ip 0.0.0.0 -host-port 7359 -container-ip 172.18.0.2 -container-port 7359
├─14925 /usr/bin/docker-proxy -proto udp -host-ip 0.0.0.0 -host-port 1900 -container-ip 172.18.0.2 -container-port 1900
└─14938 /usr/bin/docker-proxy -proto tcp -host-ip 0.0.0.0 -host-port 9090 -container-ip 172.19.0.2 -container-port 8080
再起動後では,再起動前と比べてメモリ使用量が減っていました.
感想
killコマンドを使う前に再起動することを覚えようと思いました.
原因は詳しくわかっていないので,なにか気づいたことがあれば教えていただけますと助かります.