docker - 有没有办法命令 Docker 启动容器以在下次启动时而不是现在启动?
问题描述
我正在使用 Packer 构建一个包含 Docker 映像的 EC2 AMI。我想要一些服务(重新启动策略设置为unless-stopped
下载并准备在首次启动时运行,而无需在构建期间实际运行。
目前 I docker-compose up -d
,等待任意时间,然后完成打包程序构建(这可能会不正常地停止正在运行的容器)。
我的计划是docker-compose pull && docker-compose build
创建某种发出 docker compose run 命令的初始化脚本。
有一个更好的方法吗?
解决方案
您可以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
在这篇博文中阅读更多内容。
推荐阅读
- android - 存根索引指向没有 PSI 的文件:com.intellij.openapi.fileTypes.UnknownFileType@23713b43
- javascript - 使用 jquery 从 html 克隆中删除元素标记时出现错误
- sql-server - 使用 REPLACE 函数创建 SQL Server 函数
- javascript - 嵌入一段html和javascript
- data-synchronization - 是否有任何文件属性表明特定文件已与云同步
- java - 杰克逊解析课不起作用
- c - (*prt)[N][N] 在处理堆分配内存时如何工作?
- ormlite-servicestack - ServiceStack OrmLite - 对 > 和 < 表达式使用字符串类型
- javascript - JavaScript 执行器在谷歌浏览器中工作,但在 Firefox 中不工作
- android - 在客户端显示来自服务器的多个数据源的分页数据