系统相关
首页 > 系统相关> > linux-如何使用CoreOS的cloud-config文件启动Docker容器?

linux-如何使用CoreOS的cloud-config文件启动Docker容器?

作者:互联网

我正在尝试使用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单元(当我ssh进入服务器时,docker容器未运行,因此配置文件不正确).根据CoreOS Validator,我的文件有效.另外,我不确定这是否是部署MongoDB服务器的最简单方法.
如何正确使用CoreOS单元?关于改进Mongo数据库部署方式的想法吗?

任何帮助,意见,建议表示赞赏!

解决方法:

我终于找到了解决方案.

实际运行带有-d选项的docker run会守护该命令.因此,当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停止并重新启动启动服务.

因此,解决方案可能是从docker run命令中删除-d.

标签:coreos,docker,mongodb,linux
来源: https://codeday.me/bug/20191026/1938003.html