versiones from compose and docker coreos docker-compose

from - release docker compose



Docker Compose para CoreOS (9)

Actualmente estoy aprendiendo Docker y he hecho una configuración agradable y simple de Docker Compose. 3 contenedores, todos con su propia configuración de Dockerfile. ¿Cómo podría convertir esto para trabajar en CoreOS para poder configurar un clúster más adelante?

web: build: ./app ports: - "3030:3000" links: - "redis" newrelic: build: ./newrelic links: - "redis" redis: build: ./redis ports: - "6379:6379" volumes: - /data/redis:/data



CentruyLabs creó un rubygem llamado fig2coreos

Traduce fig.yml a archivos .service

fig está en desuso desde que se creó docker-compose pero la sintaxis parece ser la misma, por lo que probablemente podría funcionar.


Creé un script simple para instalar la última versión de Docker Compose en CoreOS: 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

Solo sudo con sudo


La forma correcta de instalar o ejecutar realmente cualquier cosa en CoreOS es cualquiera

  1. Instálalo como una unidad
  2. Ejecutar en un contenedor acoplador separado

Para docker-compose es probable que desee instalarlo como una unidad, al igual que tiene docker como una unidad. Consulte las excelentes guías de Digital Ocean sobre CoreOS y el capítulo de unidades del sistema para obtener más información.

Ubique su configuración de nube según su proveedor de nube o instalación personalizada, consulte https://coreos.com/os/docs/latest/cloud-config-locations.html para conocer las ubicaciones.

Instalar docker-componer agregándolo como una unidad

#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

Tenga en cuenta que no pude hacer que las expansiones uname -s y uname -m funcionen en la instrucción curl, así que simplemente las reemplacé con sus valores expandidos.

Valide su archivo de configuración con

coreos-cloudinit -validate --from-file path-to-cloud-config

Debería producir algo así como

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 #

Tenga en cuenta que coreos-cloudinit no valida los bloques de contenido en su configuración de nube. Reinicie CoreOS cuando haya terminado y listo.

Actualización: como comentarios de @Wolfgang, puede ejecutar coreos-cloudinit --from-file path-to-cloud-config lugar de reiniciar CoreOS.


Simple 3 pasos :

sudo mkdir -p /opt/bin

Tome el comando en el sitio web oficial https://docs.docker.com/compose/install/ y cambie la ruta de salida desde / usr / local / bin / docker-compose a / 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

Hacer ejecutable:

sudo chmod +x /opt/bin/docker-compose

Ahora tienes docker-componer :)


También sugeriría docker-componer en un contenedor docker como el de dduportal .

En aras de la usabilidad extendí mi cloud-config.yml de la siguiente manera:

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"

Después de actualizar la configuración de la nube a través de sudo coreos-cloudinit-from-url http-path-to / cloud-config.yml y un reinicio del sistema, puede usar el comando docker-compose como está acostumbrado en cualquier otra máquina .


aquí está, la mejor manera que encontré:

core@london-1 ~ $ docker pull dduportal/docker-compose core@london-1 ~ $ cd /dir/where-it-is-your/docker-compose.yml core@london-1 ~ $ docker run -v "$(pwd)":/app / -v /var/run/docker.sock:/var/run/docker.sock / -e COMPOSE_PROJECT_NAME=$(basename "$(pwd)")/ -ti --rm / dduportal/docker-compose:latest up

¡hecho!


bueno, coreOS soporta Docker pero es bare bone linux con soporte de clúster, por lo que necesita incluir una imagen base para todos sus contenedores (use FROM y en Dockerfile también podría necesitar ejecutar RUN yum -y install bzip2 gnupg etc.,) que tiene los contenedores y librerías que necesita su aplicación y redis (mejor tome una imagen base de ubuntu)

Aquí puede ponerlos todos en un contenedor / docker o separarlos si lo hace por separado, entonces necesita vincular los contenedores y opcionalmente montar el volumen. La docker tiene algunas buenas notas al respecto ( https://docs.docker.com/userguide/dockervolumes/ )

Atlast, necesitas escribir la configuración de la nube que especifica las unidades del sistema. En su caso, tendrá 3 unidades que serán iniciadas por systemd (systemd reemplaza el buen sistema init anterior en coreOS) y lo alimentará a coreos-cloudinit (tip: coreos-cloudinit -from-file =. / Cloud-config -validate = falso), también necesita proporcionar esta configuración de nube en el linux bootcmd para persistencia.


tomado de https://docs.docker.com/compose/install/

lo único es que / usr es de solo lectura, pero / opt / bin es escribible y en la ruta, entonces:

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