如何将Docker容器配置为systemd服务?

时间:2019-02-14 13:25:51

标签: linux docker

我已经使用以下服务定义文件来设置systemd服务。

[Unit]
Description=MappingService
After=docker.service
Requires=docker.service

[Service]
TimeoutStartSec=3000
WorkingDirectory=/home/oren/MappingService
ExecStartPre=-/usr/bin/sudo /home/oren/MappingService/deploy.sh /home/oren/MappingService/eb-mapping-service.tgz
ExecStart=/usr/bin/sudo /home/oren/MappingService/ebms_run.sh
Type=simple

[Install]
WantedBy=multi-user.target

该服务的目的是启动特定的Docker容器。该操作似乎成功,因为docker出现在:

docker container ls

它正在侦听9090端口,我成功验证了该端口是否已被nmap打开。

但是当我在systemctl上检查服务状态时,(systemctl status mappingservice.service
我变得不活动(死),如下所示。

  

●mappingservice.service-MappingService已加载:已加载   (/etc/systemd/system/mappingservice.service;已启用;供应商预设:   启用:有效:无效(失效),自IST 2019年2月14日14:54:20起;   20分钟前进程:1784 ExecStart = / usr / bin / sudo   /home/oren/MappingService/ebms_run.sh(代码=已退出,状态= 0 /成功)   进程:1323 ExecStartPre = / usr / bin / sudo   /home/oren/MappingService/deploy.sh   /home/oren/MappingService/eb-mapping-service.tgz(代码=已退出,   状态= 0 /成功)

我在这里搜索了线索,我只找到了对实际docker服务的systemd使用的引用,而不是像我在这里尝试的那样使用的特定容器。

ebms_run.sh的内容:

#!/bin/bash -x

source defs.sh

DOCKER_PARAMS="-v /dev/log:/dev/log -d --log-driver=journald --add-host=<server1-alias1>:172.17.0.1 --add-host=<server1-alias2>:172.17.0.1 --network=bridge -p 9090:9090 --name ${DOCKER_CONTAINER_NAME}"


docker rm -f ${DOCKER_CONTAINER_NAME}
docker run ${DOCKER_PARAMS} ${DOCKER_IMAGE_NAME} /bin/bash -c "cd /build/MappingService; ./start_multiple_clients_mapping_service.sh 

脚本start_multiple_clients_mapping_service.sh在docker容器中运行,并且实际上是连续的。直到码头工人死亡,它才会死亡。

问题:
如何配置我的systemd服务来管理Docker容器?

0 个答案:

没有答案