如何使用 CoreOS 的云配置文件启动 Docker 容器?
How to start a Docker container with cloud-config file for CoreOS?
我正在尝试使用 cloud-config file for CoreOS 通过 Terraform 配置我的 CoreOS 服务器。我目前正在尝试在 Docker 容器中设置一个 Mongo 数据库。
这是我的配置文件:
write_files:
- path: "/home/core/keyfile"
permissions: "0600"
owner: "999"
content: |
hUoQVrERB0*** <here is my key for MongoDB>
coreos:
units:
- name: "dockerstart.service"
command: "start"
content: |
[Unit]
Description=Start
Author=Me
[Service]
Restart=always
ExecStart=/usr/bin/docker run --name mongo -v /home/core:/opt --add-host node1.example.com:127.0.0.1 -p 27017:27017 -d mongo:2.6.5 --smallfiles --keyFile /opt/keyfile --replSet "rs0"
ExecStop=/usr/bin/docker rm -f mongo
我不确定如何使用 coreOS units
(当我 ssh 进入服务器时,docker 容器不是 运行,所以配置文件不正确)。根据 CoreOS Validator,我的文件是有效的。另外,我不确定这是否是部署 MongoDB 服务器的最简单方法。
如何正确使用CoreOS units
?关于改进 Mongo 数据库部署方式的任何想法?
如有任何帮助、评论和建议,我们将不胜感激!
我终于找到了解决办法。
实际上 运行 docker run
和 -d
选项守护命令。所以,当systemd
发现这个动作在后台运行时,它认为Docker崩溃了。
这是服务器上的 journalctl -u dockerstart.service
结果:
docker[1237]: ace3978442a729420ecb87af224bd146ec6ac7912c5cc452570735f4a3be3a79
docker[1297]: mongo
systemd[1]: dockerstart.service: Service hold-off time over, scheduling restart.
systemd[1]: Stopped Start.
systemd[1]: Started Start.
这里可以清楚的看到systemd
停止并重启了Start
服务
因此解决方案可能是 从 docker run
命令中删除 -d。
如果以后对您有帮助,您可以使用 Container Linux 配置文件格式来设置 CoreOS 的初始配置:
我发布了一个示例,该示例基于应用于 Terraform 的容器 Linux 配置文件创建了一个点火配置:https://github.com/joariasl/terraform-ansible-docker-swarm-coreos-aws/tree/feature/coreos-etcd
我正在尝试使用 cloud-config file for CoreOS 通过 Terraform 配置我的 CoreOS 服务器。我目前正在尝试在 Docker 容器中设置一个 Mongo 数据库。 这是我的配置文件:
write_files:
- path: "/home/core/keyfile"
permissions: "0600"
owner: "999"
content: |
hUoQVrERB0*** <here is my key for MongoDB>
coreos:
units:
- name: "dockerstart.service"
command: "start"
content: |
[Unit]
Description=Start
Author=Me
[Service]
Restart=always
ExecStart=/usr/bin/docker run --name mongo -v /home/core:/opt --add-host node1.example.com:127.0.0.1 -p 27017:27017 -d mongo:2.6.5 --smallfiles --keyFile /opt/keyfile --replSet "rs0"
ExecStop=/usr/bin/docker rm -f mongo
我不确定如何使用 coreOS units
(当我 ssh 进入服务器时,docker 容器不是 运行,所以配置文件不正确)。根据 CoreOS Validator,我的文件是有效的。另外,我不确定这是否是部署 MongoDB 服务器的最简单方法。
如何正确使用CoreOS units
?关于改进 Mongo 数据库部署方式的任何想法?
如有任何帮助、评论和建议,我们将不胜感激!
我终于找到了解决办法。
实际上 运行 docker run
和 -d
选项守护命令。所以,当systemd
发现这个动作在后台运行时,它认为Docker崩溃了。
这是服务器上的 journalctl -u dockerstart.service
结果:
docker[1237]: ace3978442a729420ecb87af224bd146ec6ac7912c5cc452570735f4a3be3a79
docker[1297]: mongo
systemd[1]: dockerstart.service: Service hold-off time over, scheduling restart.
systemd[1]: Stopped Start.
systemd[1]: Started Start.
这里可以清楚的看到systemd
停止并重启了Start
服务
因此解决方案可能是 从 docker run
命令中删除 -d。
如果以后对您有帮助,您可以使用 Container Linux 配置文件格式来设置 CoreOS 的初始配置: 我发布了一个示例,该示例基于应用于 Terraform 的容器 Linux 配置文件创建了一个点火配置:https://github.com/joariasl/terraform-ansible-docker-swarm-coreos-aws/tree/feature/coreos-etcd