【问题标题】:Docker container generates docker containers on is hostDocker 容器在主机上生成 docker 容器
【发布时间】:2020-08-25 18:25:07
【问题描述】:

我有一个生成 docker 容器的节点 js 服务器。我想将该节点 js 服务器放在 docker 容器上,但如果这样做,服务器将在其容器内生成容器。

如何让服务器在主机上生成容器?

【问题讨论】:

    标签: node.js docker


    【解决方案1】:

    来自您主机的 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 注入攻击)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-08
    • 2019-08-25
    • 2018-04-26
    相关资源
    最近更新 更多