通过 UNIX 套接字连接 docker 容器

use*_*234 5 unix sockets docker

我是 Docker 的新手,但我想知道:是否可以使用 UNIX 套接字从 Linux 机器(任何)上的另一个容器连接一个容器?例如,我有一个用于应用程序核心的容器和第二个容器,用于覆盖数据库内容。第二个例子是两个带有应用程序代码的容器,第一个容器可以在第二个容器中触发一些事件。

在这两种情况下,性能对我来说都很重要。如果无法这样做,是否有解决这些问题的方法?

谢谢!

BMi*_*tch 9

是的。您可以使用卷挂载将套接字挂载到容器中。并且多个容器可以挂载同一个卷,无论是命名卷还是主机挂载,以在容器之间共享套接字。您经常在今天安装 docker socket 的容器中看到这一点,例如

docker run -it --rm -v /var/run/docker.sock:/var/run/docker.sock busybox
Run Code Online (Sandbox Code Playgroud)

将运行一个安装了 docker 套接字的容器。


关于 docker.sock 本身的注意事项:

  1. 上面是一个挂载socket的例子,把docker.sock替换成你自己应用的socket的名字。
  2. 是的,以上内容使容器可以访问管理 docker,有效地根植主机。您可以通过工具来管理打包为容器的 docker。您隐含地信任它们具有服务器上的 root 访问权限,这与信任在主机上使用 apt 或 rpm 下载的代码不同。对您授予此访问权限的内容有选择性。