如何从jenkins执行shell

时间:2015-11-30 18:40:17

标签: linux shell jenkins ssh docker

我正在从jenkins执行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编写的所有这七个命令都执行shell。下面给出了5个命令在dind容器外执行,而不是在内部。如果我从终端尝试而不是附加到容器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图像之前,它会尝试标记并推送它。在那里没有找到任何hello-world图像来标记它并没有做任何事情。

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

1 个答案:

答案 0 :(得分:0)

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

在我阅读你的帖子之后,这不是用ssh处理问题,我只想到:为什么不执行按顺序执行你想做的bash脚本?

我不确定我是否理解顺便说一句,詹金斯是否在码头工人手中?你在码头工程中运行码头工具吗?