Как настроить привилегию в Docker Swarm?

Я запускаю пример контейнера db2 с помощью этой команды docker. Ссылка на докер изображение

docker run -itd --name mydb2 --privileged=true -p 50000:50000 -e LICENSE=accept -e DB2INST1_PASSWORD=Notallowed1! -e DBNAME=testdb ibmcom/db2

Работает. Если я удалю--привилегированный = истина , я получу ошибку ниже.

connection error

Таким образом,--привилегированный=истина является обязательным.

Я попытался добавить это в docker swarm как службу с помощью этой команды.

docker service create --name db2luw_1 --privileged=true -p target=50000 -e LICENSE=accept -e 'DB2INST1_PASSWORD=Notallowed1!' -e DBNAME=testdb -d ibmcom/db2

Но получаю эту ошибку.

unknown flag: --privileged
See 'docker service create --help'.

Как запустить этот контейнер в Docker Swarm? Удаление привилегированного --создает службу, но бесполезно, так как мы получим ошибку подключения. Я проверил это.

0
задан 9 June 2021 в 11:36
2 ответа

Создание службы означает, что вы запускаете свои контейнеры в режиме роя. См. Как работают сервисы в документации Docker.

К сожалению, привилегированный режим не работает в режиме роя. Как вы видите здесь привилегированная опция --недоступна при запускеdocker service create

0
ответ дан 14 September 2021 в 09:08

Как уже было сказано в ответе mac, режим роя по-прежнему не поддерживает привилегированный режим.

Если вы хотите запустить привилегированные контейнеры в рое сегодня, есть хитрый обходной путь: просто создайте промежуточную службу, которая имеет доступ к сокету docker хоста, а затем запустите привилегированный контейнер оттуда.

Должно сработать что-то вроде следующего:

 docker service create \
   --name mydb2-wrapper \
   --mount type=bind,source=/var/run/docker.sock,target=/var/run/docker.sock,ro \
   docker \
   docker run --name mydb2 --privileged=true -p 50000:50000 -e LICENSE=accept -e DB2INST1_PASSWORD=Notallowed1! -e DBNAME=testdb ibmcom/db2
0
ответ дан 12 January 2022 в 13:20

Теги

Похожие вопросы