【发布时间】:2021-03-28 15:17:45
【问题描述】:
我有一个奇怪的问题。我已经在 Jenkins 上配置了一个 SSH_USER,并尝试使用“deploy-over-SSH”部署一个简单的 docker-service。 每次我部署它时退出如下,并且日志只是说“终止”
$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
bea48e1ee755 localhost/my-image:latest /bin/sh -c npm ru... 13 seconds ago Exited (143) 13 seconds ago 0.0.0.0:6007->3000/tcp my-cont
$ docker logs my-cont
Terminated
但如果我尝试在具有相同 SSH_USER 的同一台服务器上手动运行,我可以成功运行 docker 容器。
docker run -d -it -p 6007:3000 --name my-cont my-image
$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
nce48e1ee721 localhost/my-image:latest /bin/sh -c npm ru... 21 minutes ago 21 minutes ago 0.0.0.0:6007->3000/tcp my-cont
我通过 SSH 运行的脚本非常简单,来自 Jenkins,我从 Jenkins 传递端口,
$ bash ./run.sh $Port
docker run -d -it -p $1:3000 --name my-cont my-image
不知道是什么原因造成的。
【问题讨论】:
-
当 jenkins 尝试执行自己的容器时,您确定您手动执行的容器没有运行吗?两个容器都想在同一个端口 6007 上发布端口,所以在这种情况下它们可能会相互阻塞。
-
是的,我确保没有端口重叠,奇怪的是,如果我在同一目标服务器中创建一个简单的 cronjob 并运行脚本“run.sh”,它会像上面一样失败并出现同样的错误。奇怪。
-
观察:使用 docker 命令作为 cronjob 的脚本失败(看起来 Jenkins 没有问题),$ docker -v podman version 1.9.3 $ podman -v podman version 1.9.3 $ cat /etc/redhat -release Red Hat Enterprise Linux 8.2 版 (Ootpa)
-
尝试从您的命令中删除“-it”键。
-
将 podman 版本升级到 'podman version 2.0.5' 解决了这个问题。奇怪但错误或行为从未给出任何关于版本的线索。谢谢