Dus*_*tin 39 docker coreos docker-compose
我目前正在学习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
Run Code Online (Sandbox Code Playgroud)
Fra*_*cis 51
取自https://docs.docker.com/compose/install/
唯一的事情是/ usr是只读的,但/ opt/bin是可写的并且在路径中,所以:
sd-xx~ # mkdir /opt/
sd-xx~ # mkdir /opt/bin
sd-xx~ # curl -L https://github.com/docker/compose/releases/download/1.3.3/docker-compose-`uname -s`-`uname -m` > /opt/bin/docker-compose
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 403 0 403 0 0 1076 0 --:--:-- --:--:-- --:--:-- 1080
100 7990k 100 7990k 0 0 2137k 0 0:00:03 0:00:03 --:--:-- 3176k
sd-xx~ # chmod +x /opt/bin/docker-compose
sd-xx~ # docker-compose
Define and run multi-container applications with Docker.
Usage:
docker-compose [options] [COMMAND] [ARGS...]
docker-compose -h|--help
Options:
-f, --file FILE Specify an alternate compose file (default: docker-compose.yml)
-p, --project-name NAME Specify an alternate project name (default: directory name)
--verbose Show more output
-v, --version Print version and exit
Commands:
build Build or rebuild services
help Get help on a command
kill Kill containers
logs View output from containers
port Print the public port for a port binding
ps List containers
pull Pulls service images
restart Restart services
rm Remove stopped containers
run Run a one-off command
scale Set number of containers for a service
start Start services
stop Stop services
up Create and start containers
migrate-to-labels Recreate containers to add labels
Run Code Online (Sandbox Code Playgroud)
小智 34
我已经创建了在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
Run Code Online (Sandbox Code Playgroud)
只需运行它 sudo
gog*_*tad 23
在CoreOS上安装或运行任何东西的正确方法都是
因为docker-compose您可能希望将其作为一个单元安装,就像您docker作为一个单元一样.有关CoreOS和systemd units章节的详细信息,请参阅Digital Ocean的优秀指南以了解更多信息.
根据您的云提供商或自定义安装找到您的云配置,有关位置,请参阅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
Run Code Online (Sandbox Code Playgroud)
请注意,我无法在curl语句中使用uname -s和uname -m扩展,所以我只是用它们的扩展值替换它们.
使用验证您的配置文件
coreos-cloudinit -validate --from-file path-to-cloud-config
Run Code Online (Sandbox Code Playgroud)
它应该输出类似的东西
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 #
Run Code Online (Sandbox Code Playgroud)
请注意,coreos-cloudinit这不会验证您的cloud-config中的内容块.完成后重启CoreOS,你就准备好了.
更新:正如@Wolfgang评论,您可以运行coreos-cloudinit --from-file path-to-cloud-config而不是重新启动CoreOS.
小智 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"
Run Code Online (Sandbox Code Playgroud)
通过sudo coreos-cloudinit -from-url http-path-to/cloud-config.yml更新cloud-config 并重新启动系统后,您可以像使用其他机器一样使用docker -compose命令.
CentruyLabs创造了一个名为fig2coreos的rubygem
它将fig.yml转换为.service文件
自从docker-compose创建以来,不推荐使用fig,但语法似乎是相同的,所以它可能会起作用.
简单的3 个步骤:
sudo mkdir -p /opt/bin
Run Code Online (Sandbox Code Playgroud)
抓取官网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
Run Code Online (Sandbox Code Playgroud)
使可执行:
sudo chmod +x /opt/bin/docker-compose
Run Code Online (Sandbox Code Playgroud)
现在你有了docker-compose :)
| 归档时间: |
|
| 查看次数: |
24061 次 |
| 最近记录: |