在 CoreOS 上安装或运行任何东西的正确方法是
- 将其作为一个单元安装
- 在单独的 docker 容器中运行
因为docker-compose
您可能希望将它作为一个单元安装,就像您docker
作为一个单元一样。请参阅 Digital Ocean 的 CoreOS 优秀指南和systemd 单元章节以了解更多信息。
根据您的云提供商或自定义安装找到您的云配置,请参阅https://coreos.com/os/docs/latest/cloud-config-locations.html了解位置。
通过将其添加为一个单元来安装 docker-compose
#cloud-config
coreos:
units:
- name: install-docker-compose.service
command: start
content: |
[Unit]
Description=Install docker-compose
ConditionPathExists=!/opt/bin/docker-compose
[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/usr/bin/mkdir -p /opt/bin/
ExecStart=/usr/bin/curl -o /opt/bin/docker-compose -sL "https://github.com/docker/compose/releases/download/1.9.0/docker-compose-linux-x86_64"
ExecStart=/usr/bin/chmod +x /opt/bin/docker-compose
请注意,我无法在 curl 语句中使用uname -s
anduname -m
扩展,因此我只是将它们替换为它们的扩展值。
验证您的配置文件
coreos-cloudinit -validate --from-file path-to-cloud-config
它应该输出类似
myhost core # coreos-cloudinit -validate --from-file path-to-cloudconfig
2016/12/12 12:45:03 Checking availability of "local-file"
2016/12/12 12:45:03 Fetching user-data from datasource of type "local-file"
myhost core #
请注意,coreos-cloudinit
这不会验证您的云配置中的内容块。完成后重新启动 CoreOS,就可以开始了。
更新:正如@Wolfgang 评论,您可以运行coreos-cloudinit --from-file path-to-cloud-config
而不是重新启动 CoreOS。