首页 > 解决方案 > 有没有办法命令 Docker 启动容器以在下次启动时而不是现在启动?

问题描述

我正在使用 Packer 构建一个包含 Docker 映像的 EC2 AMI。我想要一些服务(重新启动策略设置为unless-stopped下载并准备在首次启动时运行,而无需在构建期间实际运行。

目前 I docker-compose up -d,等待任意时间,然后完成打包程序构建(这可能会不正常地停止正在运行的容器)。

我的计划是docker-compose pull && docker-compose build创建某种发出 docker compose run 命令的初始化脚本。

有一个更好的方法吗?

标签: dockeramazon-amipacker

解决方案


您可以docker pull为每个 docker 容器添加并启用一个 systemd 单元文件。像这样的东西:

[Unit]
Description=Redis Container    
After=docker.service 
Requires=docker.service
[Service] 
TimeoutStartSec=0
Restart=always 
ExecStartPre=-/usr/bin/docker stop %n 
ExecStartPre=-/usr/bin/docker rm %n 
ExecStartPre=/usr/bin/docker pull redis 
ExecStart=/usr/bin/docker run --rm --name %n redis
[Install] 
WantedBy=multi-user.target

在这篇博文中阅读更多内容。


推荐阅读