我有一个服务定义,该服务定义使用CentOS 7上的systemd启动docker容器:
[Unit]
Description=MappingService
After=portal.service
Requires=docker.service
[Service]
TimeoutStartSec=3000
Type=forking
WorkingDirectory=/home/user/Downloads/MS_0.3.4_artifact
ExecStartPre=-/bin/docker rm -f eb-mapping-service-container
ExecStartPre=/home/user/Downloads/MS_0.3.4_artifact/deploy.sh /home/user/Downloads/MS_0.3.4_artifact/eb-mapping-service.tgz
ExecStartPre=/bin/docker run -v /dev/log:/dev/log -d -ti --log-driver=journald --network=bridge -p 9090:9090 --name eb-mapping-service-container eb-mapping-service /bin/bash -c "cd /build/MappingService; ./start_multiple_clients_mapping_service.sh"
ExecStart=/bin/docker start -a eb-mapping-service-container
ExecStop=/bin/docker stop eb-mapping-service-container
[Install]
WantedBy=multi-user.target
此服务有效。它启动的Docker容器已启动。 每当我启动计算机时,它就会运行。我对此服务的问题是,它永远不会达到“活动(运行)”状态。而是停留在“激活(启动)”状态。 “ start_multiple_clients_mapping_service.sh”脚本启动node.js服务器并开始监听,因此不会直接退出。
我到处搜索并搜索了Docker的文档,找不到答案。
此外,如果我从docker start命令中删除了“ -a”,则即使容器已启动并正在运行,其状态也将为“不活动”(不活动)。
更新:
过了一会儿,我没有确切的号码,服务因超时原因而失败。这不是在3000秒之后,而是更早。 尽管服务失败,但docker仍在广播中并且可以使用。
我已经通过docker container ls
问题:
如何更改服务定义以反映Docker的活动(运行)状态?
答案 0 :(得分:2)
我理解了这个问题。有几处错误:
完成这两项更改后,随着Docker成功启动,我获得了备受追捧的Active(Running)状态。