docker run 似乎没有正确处理套接字的符号链接。
问题:
我正在尝试使用无根 docker。连接到 docker 的套接字是 /run/user/1000/docker.sock。
但我需要使用 docker-compose 文件,其中运行带有卷映射的 traefik 容器,以便从容器内部访问 /var/run/docker.sock。我无法修改这个 docker-compose 文件。
为了使它工作,我尝试做一个符号链接 /var/run/docker.sock > /run/user/1000/docker.socket。它在我的主机上运行良好,我可以使用这个套接字与无根 docker 通信,但是在运行容器时,/var/run/docker.sock 文件不是一个套接字,而是一个目录。
如何重现:
要重现 docker run 的问题:
sudo ln -s /run/user/1000/docker.sock /var/run/docker.sock
sudo docker run -v /run/user/1000/docker.sock:/var/run/docker-user.sock -v /var/run/docker.sock:/var/run/docker.sock -it traefik /bin/sh
在 traefik 容器内:
/ # ls -al /var/run/
total 0
drwxr-xr-x 1 root root 54 Dec 13 17:23 .
drwxr-xr-x 1 root root 134 Dec 13 17:23 ..
srw-rw---T 1 root 974 0 Dec 13 15:06 docker-user.sock
drwxr-xr-x 2 root root 40 Dec 13 15:09 docker.sock
谢谢您的帮助 :)