web-dev-qa-db-fra.com

«réseau non attachable manuellement» lors de l'exécution d'une commande ponctuelle contre le réseau de docker swarm

J'essaie d'exécuter une commande unique pour initialiser un schéma de base de données dans un nouvel essaim de dockers qui est déployé avec la nouvelle prise en charge de 1.13 pour les fichiers de composition de dockers.

L'essaim a le réseau suivant:

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

défini dans le docker-compose.yml fichier en tant que:

networks:
    internal:

La commande que j'exécute est

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

avec le supplément vme_ préfixe provenant du nom que j'ai donné à la pile lors du déploiement. Maintenant, lorsque j'exécute la commande ci-dessus, j'obtiens:

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

Comment rendre le réseau connectable?

Je n'ai trouvé aucune information spécifique sur l'attachable dans Docker networking et j'ai essayé d'ajouter un attribut attachable à la définition du réseau sans succès.

19
sas

Utilisation du compositeur

Depuis composer v3.2 il est possible de configurer la propriété attachable via le fichier composer en utilisant le mot clé attachable comme:

networks:
  mynet1:
    driver: overlay
    attachable: true

Utilisation de docker network create

Depuis Docker Engine API v1.25, il est possible de créer un réseau et de le rendre attachable à l'aide de --attachable paramètre comme:

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

Pour mettre à jour un service Docker déjà en cours d'exécution:

  1. Créez un réseau de superposition amovible:

    docker network create --driver overlay --attachable my-attachable-overlay-network
    
  2. Supprimez la pile réseau avec un réseau de superposition "attachable" désactivé (dans cet exemple appelé: my-non-attachable-overlay-network):

    docker service update --network-rm my-non-attachable-overlay-network myservice
    
  3. Ajoutez la pile réseau avec un réseau de superposition "attachable" activé:

    docker service update --network-add my-attachable-overlay-network myservice
    
27
Murmel

Par défaut, les réseaux de superposition créés avec le nouveau mode Swarm ne peuvent pas être utilisés avec des conteneurs non exécutés à partir de Swarm. La version 1.13 vous permet de basculer ce paramètre, alors assurez-vous que vous avez mis à niveau. Vous devez créer le réseau avec le drapeau attachable. Je ne pouvais pas non plus faire fonctionner cela sur un travailleur en essaim, le nœud devait être promu gestionnaire de l'essaim.

4
BMitch