我正在测试我的服务器的裸机恢复,它基本上用我的服务启动了一组 docker 容器。我从备份中恢复/etc/docker
,其中保留了所有配置和持久卷。
然后我尝试启动其中一个容器:
root@srv-backup:/etc/docker# docker-compose --verbose -f /etc/docker/docker-compose.d/20-registry.yaml up
compose.config.config.find: Using configuration files: /etc/docker/docker-compose.d/20-registry.yaml
ERROR: compose.cli.main.main: .IOError: [Errno 2] No such file or directory: '/etc/docker/docker-compose.d/20-registry.yaml'
但是该文件在那里:
root@srv-backup:/# ll /etc/docker/docker-compose.d/20-registry.yaml
-rwxrwxr-x+ 1 root root 842 Jan 24 15:19 /etc/docker/docker-compose.d/20-registry.yaml*
root@srv-backup:/# cat /etc/docker/docker-compose.d/20-registry.yaml
services:
registry:
container_name: registry
image: registry
labels:
- traefik.http.routers.registry.rule=Host(`registry.example.com`)
- traefik.http.routers.registry.entryPoints=https
- traefik.http.routers.registry.tls=true
- traefik.http.routers.registry.tls.certresolver=le
- traefik.http.middlewares.lan.ipwhitelist.sourcerange=192.168.10.0/24, 192.168.20.0/24
- traefik.http.routers.registry.middlewares=lan
- traefik.enable=true
restart: unless-stopped
volumes:
- /etc/docker/container-data/registry:/var/lib/registry
version: '3'
root@srv-backup:/# file /etc/docker/container-data/registry
/etc/docker/container-data/registry: directory
我尝试了各种具有相对路径和完整路径的咒语 - 问题是一样的。
我想知道 docker 守护进程是否可以访问该文件,但它也运行为root
:
root@srv-backup:/# ps -ef | grep docker
root 2048 1 0 10:58 ? 00:00:08 dockerd -G docker --exec-root=/var/snap/docker/423/run/docker --data-root=/var/snap/docker/common/var-lib-docker --pidfile=/var/snap/docker/423/run/docker.pid --config-file=/var/snap/docker/423/config/daemon.json
root 2200 2048 0 10:58 ? 00:00:07 containerd --config /var/snap/docker/423/run/docker/containerd/containerd.toml --log-level error
我很茫然为什么它不起作用(docker文件在我试图在这个DRP练习中复制的服务器上正常工作)
我找到了一种解决方法(这并不完全是问题的答案,但允许继续前进)。
docker
snap 安装:snap remove docker
docker
从存储库安装:apt install docker.io
docker-compose
:现在我用来启动示例容器的命令起作用了。
snap 版本的
docker
.这实际上帮助了我
问题可能与 python 版本
docker-compose 1.27.x 为我运行 Python 3.6.x
for >= 1.28 有关,需要 3.7.x docker
-compose >= 1.27 放弃对 Python 2.7 的支持
我不知道较低的版本号
它也可以像我一样简单:只需启动 docker。
错误信息有点烦人。