Docker Compose to CoreOS

Obecnie uczę się Dockera i stworzyłem ładną i prostą konfigurację Dockera. 3 kontenery, wszystkie z własną konfiguracją Dockerfile. Jak mogę przekonwertować to do pracy na CoreOS, aby później skonfigurować klaster?

web:
  build: ./app
  ports:
    - "3030:3000"
  links:
    - "redis"

newrelic:
  build: ./newrelic
  links:
    - "redis"

redis:
  build: ./redis
  ports:
    - "6379:6379"
  volumes:
    - /data/redis:/data
Author: Dustin, 2015-03-17

9 answers

Wzięte z https://docs.docker.com/compose/install/

Jedyną rzeczą jest to, że / usr jest tylko do odczytu, ale / opt / bin jest zapisywalny i w ścieżce, więc:

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
 47
Author: Francis,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-07-27 20:19:51

Stworzyłem prosty skrypt do instalacji najnowszego Dockera Compose na 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

Po prostu uruchom go z sudo

 31
Author: marszall87,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-09-25 13:21:38

Właściwym sposobem instalacji lub uruchomienia naprawdę czegokolwiek na CoreOS jest albo

  1. zainstaluj go jako jednostkę
  2. Uruchom w oddzielnym kontenerze Dockera

Dla docker-compose prawdopodobnie chcesz zainstalować go jako jednostkę, tak jak masz docker jako jednostkę. Zobacz doskonałe Przewodniki Digital Ocean na CoreOS i Rozdział jednostki systemd , aby dowiedzieć się więcej.

Znajdź konfigurację chmury na podstawie dostawcy chmury lub niestandardowej instalacji, zobacz https://coreos.com/os/docs/latest/cloud-config-locations.html dla lokacji.

Install docker-compose by added it as a unit

#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

Zauważ, że nie mogłem uruchomić rozszerzeń uname -s i uname -m w instrukcji curl, więc zastąpiłem je ich wartościami rozszerzonymi.

Zatwierdź plik konfiguracyjny za pomocą

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

Powinno wyjść coś takiego

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 #

Zauważ, że coreos-cloudinit nie sprawdza zawartości bloków w Twoim Cloud-config. Uruchom ponownie CoreOS, gdy skończysz i jesteś gotowy do pracy.

Update: jak @Wolfgang komentuje, możesz uruchomić coreos-cloudinit --from-file path-to-cloud-config zamiast restartować CoreOS.

 17
Author: gogstad,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-06-09 08:39:41

Sugerowałbym również komponowanie Dockera w kontenerze Dockera, takim jak ten z dduportal .

Ze względu na użyteczność rozszerzyłem mój cloud-config.yml w następujący sposób:

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"
Po zaktualizowaniu cloud-config poprzez sudo coreos-cloudinit-from-url http-path-to/cloud-config.yml i ponowne uruchomienie systemu, możesz użyć polecenia docker-compose, tak jak na każdej innej maszynie.
 6
Author: derfranz,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-08-18 14:19:56

CentruyLabs stworzył rubygem o nazwie fig2coreos

Tłumaczy się rys.yml do .pliki serwisowe

Fig jest przestarzały od czasu utworzenia docker-compose, ale składnia wydaje się być taka sama, więc prawdopodobnie może działać.

 5
Author: Julian Kaffke,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-04-02 13:28:56

Oto jest, najlepszy sposób jaki znalazłem:

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
Zrobione!
 3
Author: Luca G. Soave,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-07-28 13:25:51

Proste 3 Kroki :

sudo mkdir -p /opt/bin

Pobierz polecenie na oficjalnej stronie https://docs.docker.com/compose/install/ i zmienić ścieżkę wyjściową z /usr/local/bin/docker-compose na /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

Wykonywalny:

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

Teraz masz docker-compose :)

 3
Author: Renato Prado,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-11-30 13:07:19

Cóż, coreOS obsługuje Dockera, ale jest to zwykły Linuks z supportem klastrowania, więc musisz dołączyć obraz podstawowy dla wszystkich kontenerów (użyj Z i w pliku Dockerfile możesz również wykonać RUN yum-y install bzip2 gnupg itp.,), który ma kosze i libs, które są potrzebne przez Ciebie aplikacji i redis (lepiej wziąć trochę Ubuntu obraz bazowy)

Tutaj możesz umieścić wszystkie w jednym kontenerze/dockerze lub oddzielić, jeśli to zrobisz oddzielić, musisz połączyć kontenery i opcjonalnie volume mount-docker ma kilka dobrych uwag na ten temat ( https://docs.docker.com/userguide/dockervolumes/)

Atlast, musisz napisać cloud config, który określa jednostki systemd . W Twoim przypadku będziesz miał 3 jednostki, które zostaną uruchomione przez systemd (systemd zastępuje stary dobry system init w coreOS) i przekaż go do coreos-cloudinit(wskazówka: coreos-cloudinit-from-file=./ cloud-config-validate = false), musisz również dostarczyć ten Cloud-config na Linux bootcmd dla wytrwałość.

 2
Author: resultsway,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-03-16 21:48:19

Obecnie najprostszym sposobem użycia docker-compose przeciwko CoreOS Vagrant VM. Musisz tylko upewnić się, że przekazuje Port Docker .

Jeśli nie jesteś szczególnie przywiązany do używania docker-compose, Możesz spróbować uruchomić CoreOS Kubernetes. Istnieje wiele opcji i zaimplementowałem jedną z nich dla platformy Azure.

 0
Author: errordeveloper,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-03-17 11:26:07