【发布时间】:2020-08-25 18:25:07
【问题描述】:
我有一个生成 docker 容器的节点 js 服务器。我想将该节点 js 服务器放在 docker 容器上,但如果这样做,服务器将在其容器内生成容器。
如何让服务器在主机上生成容器?
【问题讨论】:
我有一个生成 docker 容器的节点 js 服务器。我想将该节点 js 服务器放在 docker 容器上,但如果这样做,服务器将在其容器内生成容器。
如何让服务器在主机上生成容器?
【问题讨论】:
来自您主机的 Docker 守护程序侦听 /var/run/docker.sock。
如果你将该套接字挂载到一个 docker 容器中,基本上容器内执行的 docker 命令将从你的主机发送到 docker 守护进程。
一个简单的例子是从docker 镜像运行一个容器并进行操作:
docker run -ti -v /var/run/docker.sock:/var/run/docker.sock docker
// Create a new container from the container
# docker run alpine
// List the containers running on the host, from the container:
docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
b6f70442d667 alpine "/bin/sh" 3 seconds ago Exited (0) 2 seconds ago nifty_sinoussi
0cd034af9ebc docker "docker-entrypoint.s…" 8 minutes ago Up 8 minutes determined_raman
请注意,虚拟 alpine 容器是在主机上创建的。退出 docker 容器并检查主机上的 alpine 容器:
$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
b6f70442d667 alpine "/bin/sh" 2 minutes ago Exited (0) 2 minutes ago nifty_sinoussi
0cd034af9ebc docker "docker-entrypoint.s…" 11 minutes ago Exited (0) 3 seconds ago determined_raman
【讨论】:
docker 命令,您可以非常简单地使主机root。例如,从安装了 Docker 套接字的容器内部,您可以docker run -v/:/host busybox vi /host/etc/shadow 并重置主机系统的 root 密码。如果您这样做,请务必小心处理基本的安全问题(例如 shell 注入攻击)。