如何从Docker容器访问主机Docker实例

时间:2018-07-02 04:20:08

标签: docker

问题: 假设您需要能够从容器内部在主机中创建容器,为什么?!想象一下,您在 Jenkins Pipeline 中自动执行了“连续的一切”过程,该过程包括创建用于测试的容器或服务。

即使容器和虚拟机强制与主机隔离,这也是一个有效的方案。

1 个答案:

答案 0 :(得分:0)

解决方案: 抱歉,WinTel伙计们,您期望这个答案包括Windows吗?...只是一个提示,您可以启用tcp:// localhost:2375

回到生产级答案,请执行以下步骤:

  1. 将实例绑定“ /var/run/docker.sock”从主机启动到容器:

    docker container run --name container -v /var/run/docker.sock:/var/run/docker.sock image
    
  2. docker.sock,因为任何文件都会公开其用户ID和组ID,任何具有“ docker”组的用户都可以使用客户端与Docker“对话”,因此运行以下脚本:

    #!/usr/bin/env bash
    DOCKER_SOCKET=/var/run/docker.sock
    DOCKER_GROUP=docker
    
    if [ -S ${DOCKER_SOCKET} ]; then
    DOCKER_GID=$(stat -c '%g' ${DOCKER_SOCKET})
    groupadd -for -g ${DOCKER_GID} ${DOCKER_GROUP}
    usermod -aG ${DOCKER_GROUP} youruser
    fi
    
  

不要害怕,基本上不会损坏您的系统,如果文件(套接字)    docker.sock存在(应有),脚本将为其获取组ID,将创建一个组调用    docker并将在主机中设置与docker的第一个组相同的组ID    (困惑?!?!,请记住,我们位于我们要访问的容器中    为了托管Docker,我们执行了“ docker container exec -it -u root container bash”    为了访问该容器),那么名为“ youruser” 的用户将是    通过添加到“ docker” 组进行修改。

  1. 几乎在那里!)将Docker客户端安装在您的容器中,使用 最喜欢的软件包管理器并安装docker客户端,我有相同的版本 客户端和服务器,工作起来很吸引人,但我想我可以与 其他版本,但加油!混合版本???认真的吗?
  

按照这些步骤操作后,您将可以使用通用过程运行docker命令,只需记住,可以做任何事情!!!甚至射击你的脚!!!