【发布时间】:2015-10-01 14:19:10
【问题描述】:
我正在运行一个 Jenkins 集群,其中主服务器和从服务器都作为 Docker 容器运行。
主机是在 MacOS 上运行的最新 boot2docker 虚拟机。
为了让 Jenkins 能够使用 Docker 执行部署,我已将 docker.sock 和 docker 客户端从主机安装到 Jenkins 容器,如下所示:-
docker run -v /var/run/docker.sock:/var/run/docker.sock -v $(which docker):/usr/bin/docker -v $HOST_JENKINS_DATA_DIRECTORY/jenkins_data:/var/jenkins_home -v $HOST_SSH_KEYS_DIRECTORY/.ssh/:/var/jenkins_home/.ssh/ -p 8080:8080 jenkins
我在将卷安装到在 Jenkins 容器内运行的 Docker 容器时遇到问题。例如,如果我需要在 Jenkins 容器中运行另一个容器,我会执行以下操作:-
sudo docker run -v $JENKINS_CONTAINER/deploy.json:/root/deploy.json $CONTAINER_REPO/$CONTAINER_IMAGE
上面运行容器,但文件“deploy.json”不是作为文件挂载,而是作为“目录”。即使我将目录挂载为卷,我也无法查看生成的容器中的文件。
这是因为 Docker 案例中 Docker 文件权限的问题吗?
【问题讨论】:
-
我在 EC2 主机上运行 Docker 时遇到了同样的问题,安装了
docker.sock以便容器可以使用主机 Docker。看起来您在下面的答案是正确的 - 出现在最里面的容器中的卷包含来自 EC2 主机的文件。
标签: linux jenkins docker containers