Докер 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
для именованного жесткого диска. Я также разместил сообщение в блоге по этой теме, потому что я слышу один и тот же вопрос.