我正在运行一个来自jenkins execute shell的docker容器(dind)
CONTAINER_ID="$(sudo docker run --privileged -i -d jpetazzo/dind)"
为了在容器内执行docker命令,我进入了容器shell
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容器外执行的,而不是在容器内执行的。如果我从终端尝试,那么它将连接到容器外壳并正确执行。我想在容器中执行它们,而不是从jenkins执行。我还尝试在每个命令之前添加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 execute shell。
发布于 2015-12-01 15:05:10
你这篇文章的标题是“如何ssh into running docker”。我只想指出这篇由Docker工程师写的文章:If you run SSHD in your Docker containers, you're doing it wrong!
在我读了你的帖子后,这并不是在用ssh来处理问题,我只是在想:为什么不按你想要的顺序执行bash脚本呢?
我不确定我是否理解的很好,顺便说一句,詹金斯在码头里吗?你在码头上运行码头吗?
https://stackoverflow.com/questions/34005622
复制相似问题