关于docker:如何让docker-container里既能使用systemctl又可以使用docker

4次阅读

共计 789 个字符,预计需要花费 2 分钟才能阅读完成。

最近因为工作须要,开始钻研如何在 docker 里部署编译打包环境,该环境须要可能应用 systemctl 和 docker 性能。

对于如何应用 systemctl,曾经有文章提到了:
https://developers.redhat.com…
下面是 2014 年的文章,作者最近的更新在
https://developers.redhat.com…
总之就是须要做一些配置,而后启动 container 的时候运行 CMD /usr/sbin/init

至于如何在 docker container 外部运行 docker,网上的文章一搜一大片,
正如它们所言,通常只须要把 host 上的 /var/run/docker.sock 通过 bind mount 形式挂载到 containter 外部的 /var/run/docker.sock 就能够了。其原理是和 host 共享一个 docker daemon 服务。

所以我就在启动 container 的时候同时指定了 /usr/sbin/init 和挂载 host 的 /var/run/docker.sock。
神奇的事件产生了,container 外部 /var/run 门路下齐全没有 docker.sock 的踪影。

折腾了一大圈,才在 github 上找到了一个相干的探讨
https://github.com/ansible-co…
外面有集体剖析说,应该是使能 systemctl 会使得挂载完 /var/run/docker.sock 之后又在雷同地位 mount 了一个 tmpfs,导致先前挂载的文件都看不见了。

所以外面的人举荐了一个 workaround:把 host 的 /var/run/docker.sock 先挂载到一个其余地位,保障不会被笼罩掉,随后再到 container 的 /var/run 里去做一个 symbol link,链接到挂载进来的 docker.sock,这样就能够工作了。
具体的内容还是去读原帖吧 :D

正文完
 0