Я новичок в Docker, но начал думать о производственных настройках, поэтому мне нужно решить проблему сохранения данных при использовании Docker Swarm. Я решил начать с создания инфраструктуры развертывания (TeamCity для сборок и NuGet плюс «реестр» [https://https://hub.docker.com/_/registry/]] для хранения изображений).
Я начал с TeamCity. Очевидно, что для работы требуется постоянство данных. Я могу запустить TeamCity в контейнере с диском EBS, и все выглядит так, как будто он работает нормально - TeamCity выполняет шаги настройки, и мои диски TeamCity появляются в AWS EBS, но затем рабочий узел TeamCity выделяется для выключается, и процесс установки останавливается.
Вот все шаги, которые я выполняю:
Этап 1 - Настройка машины:
- Создайте один экземпляр AWS для мастера
- Создайте два экземпляра AWS для работников
- Все это 64-битные экземпляры Ubuntu t2.mircro
- Для удобства создайте три эластичных IP-адреса и назначьте их указанным выше машинам.
- Установите Docker на все узлы с помощью этого: https://docs.docker.com/install/linux/docker-ce/ubuntu/
- Установите Docker Machine на все узлы с помощью этого: https://docs.docker.com/machine/install-machine/
- Установите Docker Compose на все узлы, используя следующее: https://docs.docker.com/compose/install/
Этап 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 volume create --driver = rexray / ebs --name = delete --opt = size = 2
$ sudo docker volume rm удалить
Все три узла могут без проблем создавать и удалять диски в 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, отключается, и процесс внезапно завершается.
Я не понимаю, что делать дальше. Я даже не знаю, где искать логи.
Любая помощь с благодарностью получена!
Ваше здоровье,
Стив.