Docker 容器正在运行,但未显示在 docker ps 中

Mar*_*etz 6 docker

我正在运行 Ubuntu Server 20.04.2,全新安装。我有一个未绑定的容器正在运行,也是一个 pihole 容器。
重新启动主机服务器后,Docker 根本不显示任何容器。也没有 docker 图像。
但是 unbound 和 pihole 容器肯定是在后台运行的。pihole 网站可以通过主机 IP 访问,并且可以毫无问题地处理来自客户端的 DNS 请求。我没有来自“docker ps”、“docker ps -a”、“docker images”和“docker stats”的输出。
我还可以看到“docker-pr”阻止了侦听端口
有人可以帮助我吗?我如何访问那些“隐形”容器?

“sudo systemctl restart docker”没有带来任何变化,

$ docker -v 
Docker version 20.10.3, build 48d30b5
Run Code Online (Sandbox Code Playgroud)
$ which docker
/usr/bin/docker
Run Code Online (Sandbox Code Playgroud)
$ apt list --installed | grep 'docker'
docker-ce-cli/focal,now 5:20.10.3~3-0~ubuntu-focal amd64 [installed,automatic]
docker-ce-rootless-extras/focal,now 5:20.10.3~3-0~ubuntu-focal amd64 [installed,automatic]
docker-ce/focal,now 5:20.10.3~3-0~ubuntu-focal amd64 [installed]
Run Code Online (Sandbox Code Playgroud)
$ snap list
Name    Version      Rev    Tracking       Publisher   Notes
core    16-2.48.2.1  10823  latest/stable  canonical?  core
core18  20200707     1880   latest/stable  canonical?  base
docker  19.03.11     471    latest/stable  canonical?  -
lxd     4.0.2        16099  4.0/stable/…   canonical?  -
snapd   2.45.2       8542   latest/stable  canonical?  snapd
Run Code Online (Sandbox Code Playgroud)
$ docker info
Client:
 Context:    default
 Debug Mode: false
 Plugins:
  app: Docker App (Docker Inc., v0.9.1-beta3)
  buildx: Build with BuildKit (Docker Inc., v0.5.1-docker)

Server:
 Containers: 0
  Running: 0
  Paused: 0
  Stopped: 0
 Images: 0
 Server Version: 19.03.11
 Storage Driver: overlay2
  Backing Filesystem: extfs
  Supports d_type: true
  Native Overlay Diff: true
 Logging Driver: json-file
 Cgroup Driver: cgroupfs
 Plugins:
  Volume: local
  Network: bridge host ipvlan macvlan null overlay
  Log: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog
 Swarm: inactive
 Runtimes: runc
 Default Runtime: runc
 Init Binary: docker-init
 containerd version: 7ad184331fa3e55e52b890ea95e65ba581ae3429
 runc version: 
 init version: fec3683
 Security Options:
  apparmor
  seccomp
   Profile: default
 Kernel Version: 5.4.0-65-generic
 Operating System: Ubuntu Core 16
 OSType: linux
 Architecture: x86_64
 CPUs: 4
 Total Memory: 7.69GiB
 Name: ubuntu
 ID: W56I:F32Q:H7O6:LWFT:AAUC:6QEI:EYOZ:HFJB:IEQ3:T6E7:ZCJG:HSJU
 Docker Root Dir: /var/snap/docker/common/var-lib-docker
 Debug Mode: false
 Registry: https://index.docker.io/v1/
 Labels:
 Experimental: false
 Insecure Registries:
  127.0.0.0/8
 Live Restore Enabled: false
Run Code Online (Sandbox Code Playgroud)

Art*_*ild 9

在您的情况下,您同时安装了 docker 的 apt 和 snap 包。使用以下命令删除 snap 包:

sudo snap remove docker
Run Code Online (Sandbox Code Playgroud)

然后您可能需要重新启动容器。

  • 非常感谢,解决了。当我读到“snap”这个词时,我记得我在安装 Ubuntu Server 时选择了安装 Docker。我猜这是安装 snap 包的地方。 (2认同)

小智 5

不幸的是,这种情况有时会发生。我找到的唯一解决方案是使用以下命令重新启动 Docker 服务:

$ sudo systemctl restart docker
Run Code Online (Sandbox Code Playgroud)

这将杀死所有正在运行的容器,但是只要它们的策略是自动启动,它们就会重新上线。如果您想在重新启动 Docker 时保持容器运行,此支持文档包含以下步骤。唯一需要注意的是,您需要重新启动 Docker 才能启用该功能,这将强制容器重新启动。