стек докера, игнорирующий неподдерживаемые опции - PullRequest
0 голосов
/ 06 ноября 2018

Я использую Docker Server Версия: 18.06.0-ce на centos 7.5.

У меня есть файл docker-compose, работающий на сервере db2 со следующим примером определения:

Файл docker-compose имеет следующие параметры:

version: "3.7"
services:
    db2exp:
        image: db2
        ports:
            - "50000:50000"
        networks:
            - lmnet
        ipc: host
        cap_add:
            - IPC_LOCK
            - IPC_OWNER
        environment:
            - DB2INSTANCE=db2inst1
            - DB2PASSWD=db2inst1
            - LICENSE=accept
        volumes:
            - db2data:/home

При использовании docker-compose up у меня нет проблем с запуском службы db2. Однако, когда я пытаюсь использовать стек Docker, я получаю следующее сообщение:

docker stack deploy test --compose-file docker-compose.yml
Ignoring unsupported options: cap_add, ipc

При этом db2start возвращает SQL1042C. Произошла непредвиденная системная ошибка.

Было бы идеально, если то, что работает в compose, работает в стеке. Что, если таковые имеются, можно сделать так, чтобы контейнер db2 мог использоваться в среде стека докеров, а не только в docker-compose?

Если это имеет значение, у меня есть версия 1.23.0-rc1 docker-compose, сборка 320e4819.

Заранее спасибо.

1 Ответ

0 голосов
/ 06 ноября 2018

В настоящее время это не поддерживается режимом роя, поскольку вы видите сообщение об ошибке и документацию. Лично я бы спросил, действительно ли вы хотите, чтобы ваша база данных работала в режиме роя. Docker не переносит том за вас, поэтому вы не увидите свои данные, если перенесете их на другой узел.

Вы можете следить за ходом добавления этого в Swarm Mode в выпусках github, их несколько, в том числе:

Хакерское решение, которое я видел, если вам действительно нужен этот запуск из режима роя, состоит в том, чтобы запланировать контейнер с подключенным сокетом докера и двоичными файлами докера в образе, который затем выполняет команду запуска докера непосредственно на локальном движке. E.g.:

version: "3.7"
services:
    db2exp-wrapper:
        image: docker:stable
        volumes:
        - /var/run/docker.sock:/var/run/docker.sock
        command: docker run --rm --cap-add IPC_LOCK --cap-add IPC_OWNER -p 50000:50000 ... db2

Я не очень рекомендую вышеупомянутое решение, поэтому использование docker-compose, вероятно, будет лучшей реализацией для вашего варианта использования. Недостатки этого решения включают в себя только публикацию порта на одном хосте и потенциальные угрозы безопасности для всех, кто имеет доступ к этому док-сокету.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...