【发布时间】:2016-03-04 12:04:40
【问题描述】:
我正在从 jenkins 执行 shell 运行一个 docker 容器 (dind)
CONTAINER_ID="$(sudo docker run --privileged -i -d jpetazzo/dind)"
要在容器内执行 docker 命令,我进入容器外壳
sudo docker exec -it --privileged ${CONTAINER_ID} bash
然后我试图在 dind 容器中执行这些命令。
sudo docker pull hubuser/hello-world
sudo docker run hubuser/hello-world
sudo docker tag imageId hubuser/hello-world:123
sudo docker login --username=hubuser --password=password
sudo docker push hubuser/hello-world
我在 jenkins 中编写的所有这 7 个命令都执行 shell。下面给出的 5 个命令在 dind 容器外执行,而不是在容器内执行。如果我从终端尝试而不是附加到容器外壳并正确执行。我想在容器内但从詹金斯执行它们。我还尝试在每个这样的命令之前添加exec:
sudo docker exec -it --privileged ${CONTAINER_ID} sudo docker pull hubuser/hello-world
sudo docker exec -it --privileged ${CONTAINER_ID} sudo docker run hubuser/hello-world
等等。这会在dind 容器内执行命令,但所有命令都是并行执行的,因此在拉取和运行hello-world 图像之前,它会尝试标记并推送它。它没有找到任何要标记的hello-world 图像,它什么也不做。
我希望我下面的所有 5 个命令在 dind 容器内串行执行,这也是来自 jenkins 的执行 shell。
【问题讨论】:
标签: linux shell jenkins ssh docker