我正在从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-worldsudo docker run hubuser/hello-worldsudo docker tag imageId hubuser/hello-world:123sudo docker login --username=hubuser --password=passwordsudo docker push hubuser/hello-world
我在jenkins中编写的所有这7条命令都执行 shell 。下面给出的5条命令在dind容器外部而不是内部执行。如果我是从终端尝试的,那么它将附加到容器 shell 并正确执行。我想在容器中执行它们,但要从 Jenkins 执行。我还尝试在每个命令之前添加exec,如下所示:
sudo docker exec -it --privileged ${CONTAINER_ID} sudo docker pull hubuser/hello-worldsudo docker exec -it --privileged ${CONTAINER_ID} sudo docker run hubuser/hello-world
等等。这会在dind容器内执行命令,但所有命令都是并行执行的,因此在拉动和运行hello-world图像之前,它会尝试对其进行标记和推送。在那里,它找不到要标记的hello-world图像,并且不执行任何操作。

我希望所有下面的5条命令都在dind容器内串行执行,这也可以从jenkins execute shell中执行。

最佳答案

您的帖子标题是“如何SSH进入正在运行的docker”。我只想指出这篇由Docker工程师撰写的文章:If you run SSHD in your Docker containers, you're doing it wrong!

看完您的文章后,那不是用ssh解决问题,我只是想:为什么不执行顺序执行您想要的bash脚本?

我不确定我是否很好理解, Jenkins 在 docker 内部吗?您是否正在docker中运行docker?

10-07 19:19
查看更多