docker-compose - инструмент для оркестрации мультиконтейнерного приложения.
docker-compose [COMMAND] -h - узнать помощь по конкретной команде.docker-compose up - запускает(билдит, стягивает, создает из образов контейнеры и потом запускает) все контейнеры
docker-compose up -d --no-deps [SERVICE_NAME] - пересоборать указанный сервис, при этом не ложить даже те, что от него зависят.
docker-compose ps - проверить текущее состояние контейнеро, упрвляемых композером
docker-compose logs - выводит цветные и собранные логи из контейров, упрвляемых композером, на момент вызова команды
docker-compose logs -f - выводит цветные и собранные логи из контейров, упрвляемых композером, в режиме постоянного наблюдения за текщими обновлениями
docker-compose logs [SERVICE_NAME] - выводит цветные и собранные логи из контейра с указанным именем
docker-compose stop - останавливаем без удаления контейнеры управляемые композером
docker-compose rm - удаляет контейнеры управляемые композером
docker-compose build - пересобирает все образы
docker-compose build [SERVICE_NAME,...] - пересобирает только указанные образы
docker-compose scale app=3 fe=2 - масшатбируем указанный сервис по имени до указанного количества контейнеров. Это не сработает, если сервису дали статическое имя контейнера
docker-compose pull - стягивает образы с реджистри, а не билдит их с нуля.
docker-compose create - создает контейнеры с образов, которые были до этого собраны(build) или скачены(pull).
docker-compose start - запускает созданные, но еще не запущенные, контейнеры.
docker-compose pause [SERVICE_NAME,...] - приостановть сервис, сохраняя его текущее состояние, с которого можно возобновить работу.
docker-compose unpause [SERVICE_NAME,...] - продолжить работу приостановленного сервиса/сервисов.
docker-compose run [SERVICE_NAME,...] [CMD] - запустаются команды типа "сдела одноразовое вычисление и положил контейнер". Собираются репорты, отправляются письма с накопившейся статистикой и подобные джобы.
docker-compose port --index=2 worker 80 - узнать порт сервиса, которому не было определено явного порта на хосте, ключ индекс же используется, когда сервис был отмасштабированный и нас интересует именно указанный по порядку поднятый контейнер этого сервиса.
docker-compose events - запускает процесс, который мониторит, что происходит в класете и сообщает об этом в консоль - например изменение масштабирования командой с другой сессии терминала, или падение какого-то контейнера и тому подобное.
docker-compose config - выводит содержимое компоуз файла, если в файле нет ошибок, или сообщение об ошибке - если есть.
Компоуз также будет использовать переменные среды, чтобы заменить на их значения места в docker-compose.yml. Чтобы выставить их по умолчанию, можно завести файл .env, который компоуз читает и применяет, если явно не были выставлены переменные среды при вызове или в системе.
Также можно подключать наружные файлы:
Все команды будут искать в текущей директории файл docker-compose.yml.
Или же можно через ключ -f(--file) FILE указать файл с любым именем из любого места.
-H(--host) HOST - указываем хост на котором находится демон докера для запуска кластера.
Ключи для защищенного соединения:
--tls
--tlscacert CA_PATH
--tlscert CLIENT_CERT_PATH
--tlskey TLS_KEY_PATH
--tlsverify
--skip-hostname-check
Компоуз также позволяет придерживаться принцип DRY.
У нас может быть три компоуз файла.
common.yml:
docker-compose scale app=3 fe=2 - масшатбируем указанный сервис по имени до указанного количества контейнеров. Это не сработает, если сервису дали статическое имя контейнера
container_name: someserive, потому что создать еще один контейнер с тем же именем не получится.docker-compose pull - стягивает образы с реджистри, а не билдит их с нуля.
docker-compose create - создает контейнеры с образов, которые были до этого собраны(build) или скачены(pull).
docker-compose start - запускает созданные, но еще не запущенные, контейнеры.
docker-compose pause [SERVICE_NAME,...] - приостановть сервис, сохраняя его текущее состояние, с которого можно возобновить работу.
docker-compose unpause [SERVICE_NAME,...] - продолжить работу приостановленного сервиса/сервисов.
docker-compose run [SERVICE_NAME,...] [CMD] - запустаются команды типа "сдела одноразовое вычисление и положил контейнер". Собираются репорты, отправляются письма с накопившейся статистикой и подобные джобы.
docker-compose port --index=2 worker 80 - узнать порт сервиса, которому не было определено явного порта на хосте, ключ индекс же используется, когда сервис был отмасштабированный и нас интересует именно указанный по порядку поднятый контейнер этого сервиса.
docker-compose events - запускает процесс, который мониторит, что происходит в класете и сообщает об этом в консоль - например изменение масштабирования командой с другой сессии терминала, или падение какого-то контейнера и тому подобное.
docker-compose config - выводит содержимое компоуз файла, если в файле нет ошибок, или сообщение об ошибке - если есть.
docker-compose down - stop, rm, rm networks, rm volumes(нужен ключ -v. --volumes), rm images(нужен ключ --rmi type(all or local)).
docker-compose restart - down, up.Компоуз также будет использовать переменные среды, чтобы заменить на их значения места в docker-compose.yml. Чтобы выставить их по умолчанию, можно завести файл .env, который компоуз читает и применяет, если явно не были выставлены переменные среды при вызове или в системе.
Также можно подключать наружные файлы:
version: '2'
services:
worker:
image: tutum/hello-world:${TAG}
environment:
- BAR
env_file:
- "staging.env"
ports:
- 80
Если мы указываем переменную окружения без значения в секции environment, то такая переменная мигрирует с хозяйской ОС в контейнер.
Все команды будут искать в текущей директории файл docker-compose.yml.
Или же можно через ключ -f(--file) FILE указать файл с любым именем из любого места.
-H(--host) HOST - указываем хост на котором находится демон докера для запуска кластера.
Ключи для защищенного соединения:
--tls
--tlscacert CA_PATH
--tlscert CLIENT_CERT_PATH
--tlskey TLS_KEY_PATH
--tlsverify
--skip-hostname-check
Компоуз также позволяет придерживаться принцип DRY.
У нас может быть три компоуз файла.
common.yml:
version: '2'
services:
dockerapp:
ports:
- "5000:5000"
redis:
image: redis:3.2.0
docker-compose.yml, где мы подключаем первый файл в необходимые сервисы и указываем какой сервис мы будет расширять/перегружать:
version: '2'
services:
dockerapp:
extends:
file: common.yml
service: dockerapp
build: .
redis:
extends:
file: common.yml
service: redis
prod.yml, тут предполагается, что влючен и подключен к какому-то клауду swarm:
version: '2'
services:
dockerapp:
extends:
file: common.yml
service: dockerapp
image: jleetutorial/dockerapp
environment:
- constraint:node==master
depends_on:
- redis
networks:
- mynet
redis:
extends:
file: common.yml
service: redis
networks:
- mynet
networks:
mynet:
driver: overlay
dockerapp тут ссылается на образ, а не на место в файловой системе, поэтому образ не собирается, а качается с реджистри.constraint:node==master - указывается для того, чтобы сервис деплоился на конкретный сервер(сервера) помеченный тегом
driver: overlay - этот тип сети позволяет создать сеть между контейнерами в интернете(каждый контейнер запущен на разных хостах и возможно даже в раных датацентрах), а не на одном хосте.
А еще мы можем иметь несколько файлов и все их явно подключить, и они в порядке подключения перегрузят значения, последний подключенный файл перегрузит все предыдущие.
docker-compose -f foo.yml -f boo.yml -f zoo.yml config
При этом есть зарезервированное имя, которое по умолчанию сразу же принимается перегрузить значения дефолтного файла. Это docker-compose.override.yml.
Комментариев нет:
Отправить комментарий