我目前正在学习Docker,并且做了一个漂亮而简单的Docker Compose设置。 3个容器,都有自己的Dockerfile设置。我怎样才能将其转换为在CoreOS上工作,以便稍后我可以设置一个集群?
web:
build: ./app
ports:
- "3030:3000"
links:
- "redis"
newrelic:
build: ./newrelic
links:
- "redis"
redis:
build: ./redis
ports:
- "6379:6379"
volumes:
- /data/redis:/data
答案 0 :(得分:51)
取自https://docs.docker.com/compose/install/
唯一的问题是/ usr是只读的,但/ opt / bin是可写的并且在路径中,所以:
NSLog(@"x: %f y: %f ",self.view.bounds.size.width,self.view.bounds.size.height);
NSLog(@"x: %f y: %f ",self.view.frame.size.width,self.view.frame.size.height);
// outputs
// x: 1024.000000 y: 748.000000
// x: 1024.000000 y: 748.000000
答案 1 :(得分:33)
我已经创建了在CoreOS上安装最新Docker Compose的简单脚本: https://gist.github.com/marszall87/ee7c5ea6f6da9f8968dd
#!/bin/bash
mkdir -p /opt/bin
curl -L `curl -s https://api.github.com/repos/docker/compose/releases/latest | jq -r '.assets[].browser_download_url | select(contains("Linux") and contains("x86_64"))'` > /opt/bin/docker-compose
chmod +x /opt/bin/docker-compose
只需使用sudo
答案 2 :(得分:23)
在CoreOS上安装或运行任何东西的正确方法是
对于docker-compose
,您可能希望将其作为一个单元安装,就像您将docker
作为一个单元一样。有关CoreOS和systemd units章节的信息,请参阅Digital Ocean的优秀指南以了解更多信息。
根据您的云提供商或自定义安装找到您的云配置,有关位置的信息,请参阅https://coreos.com/os/docs/latest/cloud-config-locations.html。
通过将docker-compose作为一个单元添加来安装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
和uname -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
不会验证您的cloud-config中的内容块。你完成后重新启动CoreOS,你准备好了。
更新:正如@Wolfgang评论,您可以运行coreos-cloudinit --from-file path-to-cloud-config
而不是重新启动CoreOS。
答案 3 :(得分:7)
我还建议使用像dduportal中那样的docker容器中的docker-compose。
为了便于使用,我将我的cloud-config.yml扩展如下:
write_files:
- path: "/etc/profile.d/aliases.sh"
content: |
alias docker-compose="docker run -v \"\$(pwd)\":\"\$(pwd)\" -v /var/run/docker.sock:/var/run/docker.sock -e COMPOSE_PROJECT_NAME=\$(basename \"\$(pwd)\") -ti --rm --workdir=\"\$(pwd)\" dduportal/docker-compose:latest"
通过 sudo coreos-cloudinit -from-url http-path-to / cloud-config.yml 更新cloud-config并重新启动系统后,您可以使用docker-compose像你这样的命令已经习惯了所有其他机器。
答案 4 :(得分:6)
CentruyLabs创建了一个名为fig2coreos
的rubygem它将fig.yml转换为.service文件
自从docker-compose创建以来,不推荐使用fig,但语法似乎相同,因此它可能会起作用。
答案 5 :(得分:4)
在这里, 我找到的最佳方式:
{
"files.exclude": {
"**/*.js": true
}
}
完成!
答案 6 :(得分:4)
简单 3个步骤:
sudo mkdir -p /opt/bin
在官方网站https://docs.docker.com/compose/install/中抓取命令并将输出路径从 / usr / local / bin / docker-compose 更改为 / opt / bin :
sudo curl -L "https://github.com/docker/compose/releases/download/1.9.0/docker-compose-$(uname -s)-$(uname -m)" -o /opt/bin/docker-compose
制作可执行文件:
sudo chmod +x /opt/bin/docker-compose
现在你有 docker-compose :)
答案 7 :(得分:3)
好吧,coreOS支持docker,但它是带有集群支持的裸骨linux,所以你需要为所有容器包含一个基本映像(使用FROM和在Dockerfile中你可能还需要运行RUN yum -y install bzip2 gnupg等。 ,)有你的应用程序和redis所需的bin和libs(最好采取一些ubuntu基础图像)
在这里你可以将它们全部放在一个容器/码头中或单独分开然后你需要链接容器和可选的卷安装 - docker有一些关于它的好注释(https://docs.docker.com/userguide/dockervolumes/)
Atlast,您需要编写指定systemd单元的云配置。在您的情况下,您将有3个将由systemd启动的单元(systemd替换coreOS中的旧的旧系统)并将其提供给coreos-cloudinit(提示:coreos-cloudinit -from-file =。/ cloud-config -validate = false),你还需要在linux bootcmd上提供这个cloud-config以保持持久性。
答案 8 :(得分:1)
目前,使用docker-compose
的最简单方法是CoreOS Vagrant VM。您只需要确保forward Docker port。
如果您不特别使用docker-compose
,则可以尝试运行Kubernetes的CoreOS。有多个options,我已实施one of those for Azure。
答案 9 :(得分:0)
要在Fedora CoreOS中使用docker-compose,您可能会遇到python问题,但是从容器运行docker-compose效果很好。
有一个方便的bash包装器脚本,在以下官方文档中进行了记录:https://docs.docker.com/compose/install/#alternative-install-options在“安装为容器”部分下。