dockerのコンテナが神隠しにあった話

# 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コマンドを使う前に再起動することを覚えようと思いました．
原因は詳しくわかっていないので，なにか気づいたことがあれば教えていただけますと助かります．