2017-01-25 5 views
1

Я пытаюсь запустить одноразовую команду для инициализации схемы базы данных в новом роуте докеров, который развернут с новой поддержкой 1.13 для docker-compose files.«сеть не может быть вручную подключена» при выполнении одноразовой команды против сети сокетов докеров

рой имеет следующую сеть:

$ docker network ls 
NETWORK ID   NAME    DRIVER    SCOPE 
... 
b7dptlu8zyqa  vme_internal   overlay    swarm 
... 

определен в файле docker-compose.yml как:

networks: 
    internal: 

Команда, которую я ПУСК

docker run --rm --network vme_internal app:0.1 db upgrade 

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

docker: Error response from daemon: Could not attach to network vme_internal: 
rpc error: code = 7 desc = network vme_internal not manually attachable. 

Как подключить сеть?

Я не нашел подходящую информацию о прикрепляемом файле в Docker networking и попробовал добавить атрибут attachable в определение сети без успеха.

ответ

2

По умолчанию оверлейные сети, созданные с новым режимом роя, не могут использоваться с контейнерами, которые не запускаются из рой. Версия 1.13 позволяет вам переключать этот параметр, поэтому убедитесь, что вы обновили его. Вы должны создать сеть с прикрепляемым флагом. Я также не мог заставить это работать на рой-работника, узел должен был быть продвинут к менеджеру рой.

+1

Это на 1,13 на самом деле. Как создать подключаемую сеть? Возможно ли это через файл compose или мне нужно создать сеть извне и объявить ее как таковой в файле compose? – sas

+0

Я не верю, что у compose есть поддержка для этого. Вы можете развернуть стек, используя файл compose, который использует рой и избегает необходимости быть прикрепляемым. Или вы можете заранее определить сеть и сделать ее внешней в своем файле компоновки. – BMitch

+0

Теперь можно непосредственно определить состав, см. Ответ ниже: https://stackoverflow.com/a/48404258/697930 – Matt

2

Использование композитору

Поскольку композитор v3.2 можно настроить присоединяемый свойство через файл композитора, используя ключевое слово attachable как:

networks: 
    mynet1: 
    driver: overlay 
    attachable: true 

Использование docker network create

С Докер Engine API v1.25 можно создать сеть и сделать его крепиться с помощью --attachable параметра, как:

docker network create --driver overlay --attachable my-overlay-network 

Для обновления уже запущенная службы Docker:

  1. Создания присоединяемых наложенных сетей:

    docker network create --driver overlay --attachable my-attachable-overlay-network 
    
  2. Удалите сетевой стек с отключенным "прикрепляемым" наложенной сети (в данном примере называется: my-non-attachable-overlay-network):

    docker service update --network-rm my-non-attachable-overlay-network myservice 
    
  3. Добавить сетевой стек с поддержкой "прикрепляться" наложенной сети:

    docker service update --network-add my-attachable-overlay-network myservice 
    
+0

Обратите внимание, что если вы уже были установлены стек, просто обновление сетевой конфигурации будет недостаточно. Вам нужно будет удалить стек и развернуть его снова, поскольку сеть не отслеживается для изменений и создается только при первоначальном развертывании. – Matt