docker容器:服务立即退出

时间:2019-03-14 05:49:05

标签: docker service containers exit

我在后台运行一个容器

docker run -d -e SERVER_ADDR=127.0.0.1 --name resource agent:1.0

但它立即退出。

DOCKERFILE

FROM centos:latest
MAINTAINER Simon <khlyum@innerbus.com>

RUN yum -y update; yum clean all
RUN yum -y install systemd; yum clean all;

RUN mkdir -p /cloud/config
RUN mkdir -p /cloud/log

WORKDIR /cloud

COPY sm_agent_resource sm_agent_resource
COPY config/agent.conf config/agent.conf
COPY config/log.xml config/log.xml
COPY cloud-resource cloud-resource
COPY certificate.pem certificate.pem
COPY client.crt client.crt
COPY client.key client.key

CMD /cloud/cloud-resource

云资源

#!/bin/bash
# chkconfig: 234 90 90

NAME=agent_resource    
AGENT_HOME=/cloud

echo "Agent Config Setting"
sed -i '3i\  "agent_server_ip":"'${SERVER_ADDR}'",' config/agent.conf

echo "Start Cloud Agent_Resource"
nohup /cloud/sm_agent_resource 1>/dev/null 2>&1 &
#nohup /cloud/sm_agent_resource >>log/agent.log 2>&1 (<==I try it also.)

当我通过/ bin / bash连接到docker并运行cloud-resource时,进程正在运行。

run -d -it -e SERVER_ADDR=127.0.0.1 --name resource1 agent:1.0 --entrypoint /bin/bash 

1 个答案:

答案 0 :(得分:2)

Docker容器的根进程完成后将立即停止。

您正在使用

定义根进程
CMD /cloud/cloud-resource

在docker容器内部,它将被执行,一旦执行完成,容器将被停止。由于cloud-resource的最后一个命令是一个nohup,最后是一个&,因此您要将命令移至后台。然后,该脚本结束,容器的根进程也结束。

事实

docker run -d -it -e SERVER_ADDR=127.0.0.1 --name resource1 agent:1.0 --entrypoint /bin/bash

继续运行是因为您正在用entrypoint /bin/bash覆盖根进程。 -i告诉docker即使未连接STDIN也保持打开状态。因此,您的bash处于活动状态-即使已分离。

尝试修改脚本以不使用nohup&