我正在从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也是如此。
答案 0 :(得分:0)
你的帖子的标题是“如何ssh到运行docker”。我只是想指出一篇由Docker工程师撰写的文章:If you run SSHD in your Docker containers, you're doing it wrong!
在我阅读你的帖子之后,这不是用ssh处理问题,我只想到:为什么不执行按顺序执行你想做的bash脚本?
我不确定我是否理解顺便说一句,詹金斯是否在码头工人手中?你在码头工程中运行码头工具吗?