Я довольно новичок в Docker, но начал задумываться о настройке производства, поэтому мне необходимо решить проблему с сохранением данных при использовании Docker Swarm. Я решил начать с создания инфраструктуры развертывания (TeamCity для сборок и NuGet плюс «реестр» [https://hub.docker.com/_/registry/] для хранения образов).
Я начал с TeamCity. Очевидно, что для работы требуется постоянство данных. Я могу запустить TeamCity в контейнере с диском EBS, и все выглядит так, как будто он работает просто отлично - TeamCity работает на этапах настройки, а мои диски TeamCity отображаются в AWS EBS, но затем рабочий узел TeamCity выделяется для выключается и процесс установки останавливается.
Вот все шаги, которые я выполняю:
Этап 1 - Настройка машины:
Этап 2 - Настройка Docker Remote на главном сервере:
$ sudo docker run -p 2375:2375 --rm -d -v /var/run/docker.sock:/var/run/docker.sock jarkt/docker-remote-api
Этап 3 - установить плагин rexray / ebs на все машины:
$ sudo docker plugin install --grant-all-permissions rexray/ebs REXRAY_PREEMPT=true EBS_ACCESSKEY=XXX EBS_SECRETKEY=YYY
[Я поднял правильные значения из AWS для XXX и YYY]
Я проверяю это, используя:
$ том sudo docker create --driver = rexray / ebs --name = delete --opt = size = 2
$ sudo docker volume rm delete
Все три узла могут создавать и удалять диски в AWS EBS без проблем.
Фаза 4 - Настройка роя:
Запустите это на мастере:
$ sudo docker swarm init --advertise-addr eth0: 2377
Это дает команду для запуска на каждом из рабочих, которая выглядит следующим образом:
$ sudo docker swarm join - token XXX 1.2.3.4:2377
Они отлично работают на рабочих машинах.
Этап 5 - Настройка визуализации с помощью Remote Powershell на моем локальном компьютере:
$ $env:DOCKER_HOST="{master IP address}:2375"
$ docker stack deploy --with-registry-auth -c viz.yml viz
viz.yml выглядит так:
version: '3.1'
services:
viz:
image: dockersamples/visualizer
volumes:
- "/var/run/docker.sock:/var/run/docker.sock"
ports:
- "8080:8080"
deploy:
placement:
constraints:
- node.role==manager
- Это прекрасно работает и позволяет мне визуализировать мой рой.
Этап 6 - Установите TeamCity с помощью Remote Powershell на мой локальный компьютер:
$ docker stack deploy --with-registry-auth -c docker-compose.yml infra
docker-compose.yml выглядит так:
version: '3'
services:
teamcity:
image: jetbrains/teamcity-server:2017.1.2
volumes:
- teamcity-server-datadir:/data/teamcity_server/datadir
- teamcity-server-logs:/opt/teamcity/logs
ports:
- "80:8111"
volumes:
teamcity-server-datadir:
driver: rexray/ebs
teamcity-server-logs:
driver: rexray/ebs
[Включение NGINX в качестве прокси-сервера - это более поздний шаг в моем списке дел.]
Я вижу, как в AWS EBS появляются необходимые диски, а контейнер отображается в моей визуализации роя.
Однако через некоторое время после просмотра экрана прогресса в TeamCity рабочая машина, содержащая экземпляр TeamCity, завершает работу, и процесс внезапно завершается.
Я не знаю, что делать дальше. Я даже не уверен, где искать логи.
Любая помощь с благодарностью получена!
Приветствия
Стив.