LoginSignup
0
0

More than 3 years have passed since last update.

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

Posted at

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

0
0
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
0