Докер 1.12 режим рой и объемы контейнеров

У меня есть несколько контейнеров, которые требуют состояния - я только когда-либо установил масштаб в 1, но мне бы хотелось, чтобы какой-либо хост, который они запускали на томе, был общим.

Я предполагаю, что мне нужно использовать сетевое крепление для достижения этого (и это нормально), но как настроить громкость с помощью докеры 1.12?

Я знаю, что могу использовать создание тонера, и я думаю, что мне может понадобиться указать драйвер, но я изо всех сил пытаюсь найти один из примеров этого!

Ответ 1

docker service create --mount ... предоставляет два варианта постоянных данных; bind mounts и именованные тома. Bind mounts persist на созданном хосте не будет работать для вас, так как не будет использоваться.

Именованные тома могут быть созданы с помощью docker volume create или созданы неявно как часть docker service create с использованием параметра -mount, например

$ docker volume create -d --driver cio --name cassandradb --opt profile=CASSANDRA
$ docker service create \
--mount source=cassandradb,target=/var/lib/cassandra,volume-driver=cio \
--replicas 1 \
--name cassandra \
cassandra

docker service create по умолчанию присвоены именам томов, поэтому тип не указан в примере. Драйвер громкости поддерживает переносные тома. Другие драйверы томов, такие как RexRay или Flocker, также поддерживают переносные тома. Вот статья с примерами на RexRay.

Также есть опции -mount для томов и томов. Официальная документация по-прежнему не поддерживается на сайте Docker. Однако вы можете получить дополнительную информацию о привязке привязок и названных томах здесь.

Ответ 2

Я не уверен, что синтаксис был завершен на этом, поскольку github pull request 24334 показывает, но параметр cli, который вы ищете для docker service --mount .... При использовании чего-то подобного вы создаете ситуацию, когда вам нужно убедиться, что данные доступны для монтажа, поэтому вы смотрите на драйверы, такие как nfs или gluster. В противном случае, если контейнер нужно переместить, и вы установили данные непосредственно с хоста, он будет перезагружен без необходимого монтирования.


Изменить: текущий синтаксис --mount:

docker service create --name nginx \
  --mount type=bind,source=`pwd`/static-site,target=/usr/share/nginx/html \
  -p 80:80 nginx

для монтирования хоста/связывания или

docker service create --name nginx \
  --mount type=volume,source=web,target=/usr/share/nginx/html \
  -p 80:80 nginx

для именованного жесткого диска. Я также разместил сообщение в блоге по этой теме, потому что я слышу один и тот же вопрос.