From 970d29a888fe506e4b622f6b8f2b8201de2f3b56 Mon Sep 17 00:00:00 2001 From: Dmitry Ignatiev Date: Wed, 15 Nov 2023 14:23:04 +0300 Subject: [PATCH] Added notes about cluster volumes --- .../lection.md | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/module2/08_docker_containerization_advanced/lection.md b/module2/08_docker_containerization_advanced/lection.md index 8d1c174..cb5c2e5 100644 --- a/module2/08_docker_containerization_advanced/lection.md +++ b/module2/08_docker_containerization_advanced/lection.md @@ -32,9 +32,30 @@ Docker Compose использует YAML в качестве языка конф Docker Swarm это простой оркестратор для контейнеров, который доступен из коробки. Позволяет объединить докер демоны на разных машинах в кластер, что даёт возможность поставки распределённых приложений упакованных в контейнеры. Swarm, так же как и Compose, имеет декларативную модель описания кластерного приложения. Типичными задачами для такого типа приложений являются организация высокой доступности, балансировки нагрузки и канареечного обновления сервиса. Также вы можете добиться эластичности распределённого приложения, которое создаёт и удаляет контейнеры в зависимости от поступающей нагрузки. +Имейте ввиду, что разделение томов данных в кластере имеет свои особенности, о которых подробно можно почитать по ссылкам ниже, но вот некоторые из них. + +Во-первых, стандартный драйвер томов данных в Docker имеет говорящее название `local`, и таким образом, при использовании его в кластере, +и при монтировании тома с помощью, к примеру, команды `docker service create --mount type=volume...`, +том данных будет локально создаваться на каждом узле Swarm. \ +Это часто является нежелательным поведением, поэтому для кластеров часто используются специфические драйвера томов данных, такие как `NFS` или `GlusterFS`. + +Во-вторых, тому данных можно задать область видимости(scope) - `single` или `multi`, что означает соответственно возможность доступа из одного или нескольких узлов. + +В-третьих, тому данных можно задать ограничения на возможности чтения и записи, такие как + +- `none` - доступ к тому возможен только из одного узла +- `readonly` - доступ к тому возможен только на чтение +- `ovewriter` - доступ к тому на запись возможен только с одного узла одновременно, доступ на чтение - отовсюду +- `all` - никаких ограничений на чтение и запись + ## Ссылки: - https://docs.docker.com/engine/reference/builder/ - https://docs.docker.com/compose/ - https://docs.docker.com/compose/compose-file/ - https://docs.docker.com/get-started/swarm-deploy/ - https://docs.docker.com/engine/swarm/swarm-tutorial/ +- https://docs.docker.com/storage/volumes/#share-data-between-machines +- https://www.optimum-web.com/shared-storage-volumes-in-docker-swarm/ +- https://github.com/moby/moby/blob/master/docs/cluster_volumes.md +- https://github.com/moby/moby/issues/39624 +- https://thenewstack.io/tutorial-create-a-docker-swarm-with-persistent-storage-using-glusterfs/