我一直在使用docker-machine
和virtualbox
驱动程序(使用tinycorelinux
)。尝试使用用于GCP的docker-machine
驱动程序将命令重新应用于google
时,发现在执行docker swarm init
之类的操作时遇到问题。
我在很多事情上都得到了permission denied
,因此研究tinycorelinux
图像和google
图像之间的差异后,我发现GCP图像始终与用户docker-user
,而tinycorelinux
将与用户docker
一起运行。
这是permission denied
问题的原因。查看GCP图像,/var/run/docker.sock
拥有root
,而tinycorelinux
拥有/var/run/docker.sock
的{{1}}。最后,GCP映像与用户docker
一起部署,而该用户甚至不在其docker-user
所属的docker
组中。
我见过2014年的帖子,内容是人们如果没有/var/run/docker.sock
就无法运行诸如docker swarm init
之类的命令。 GitHub上有很多非常流行的建议,建议sudo
,但显然不需要这样做。然后,我会听到有关使用sudo chmod 666 /var/run/docker.sock
标签进行部署的Docker安全问题的故事(我猜这是其中一些问题的根源)。
GCP图片出了什么问题?我已经在Centos和Ubuntu上看到过它。他们为什么使用--privileged
组中没有的docker-user
? GCP的图片似乎鼓励不安全的行为。我自己无法弄清楚如何在没有docker
docker swarm init
或以chmod
的形式发出命令的情况下在其图像上发出docker.sock
。
我是否缺少有关最佳做法的信息?
如果没有,我如何使用自己的图像?