如何SSH从运行docker容器从jenkins执行壳

我正在jenkins执行shell运行dind容器( 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容器外执行的,而不是在里面。 如果我从terminal尝试,而不是连接到容器shell并正确执行。 我想在容器内但是从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映像之前,它会尝试标记并推送它。 那里没有find任何hello-world形象来标记,它不会做任何事情。

我希望我的所有下面的5个命令在dind容器内部串行执行,jenkins也执行shell。

您的文章的标题是“如何ssh到运行docker”。 我只想指出这篇由Docker工程师写的文章: 如果你在你的Docker容器中运行SSHD,那你就错了!

读完你的post后,这不是用ssh来对待的问题,我只是想:为什么不执行一个按你想要的顺序执行的bash脚本呢?

我不确定我是否理解顺便,是一个docker工人jenkins? 你在docker上运行docker吗?