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
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
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
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
- zainstaluj go jako jednostkę
- 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.
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.
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.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ć.
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!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 :)
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ść.
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.
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