web-dev-qa-db-fra.com

Docker ne peut pas être lié à un conteneur qui n'est pas en cours d'exécution

Je dois créer des conteneurs Rails et Mysql avec docker-compose. Lorsque j'essaie de créer des liens entre les conteneurs avec docker-compose up, je reçois

Impossible de démarrer le conteneur 9b271c58cf6aecaf017dadaf5b Lien impossible vers un conteneur non en cours d'exécution: /puma_db_1 AS/puma_web_1/db

Des dossiers

Dockerfile

FROM ubuntu:14.04

RUN apt-get -y update
RUN apt-get -y install git curl zlib1g-dev build-essential libssl-dev libreadline-dev libyaml-dev libsqlite3-dev sqlite3 libxml2-dev libxslt1-dev libcurl4-openssl-dev python-software-properties libffi-dev

RUN apt-get -y install libmysqlclient-dev
RUN git clone https://github.com/sstephenson/rbenv.git /root/.rbenv
RUN git clone https://github.com/sstephenson/Ruby-build.git /root/.rbenv/plugins/Ruby-build
RUN echo 'eval "$(rbenv init -)"' >> $HOME/.profile
RUN echo 'eval "$(rbenv init -)"' >> $HOME/.bashrc

RUN rbenv install 2.1.5
RUN rbenv global 2.1.5
RUN gem install Rails -v 4.0.11

ADD app.tar.gz /home/
WORKDIR /home/app

RUN bundle install
EXPOSE 3000
CMD ["Rails", "server", "-b", "0.0.0.0"]

docker-compose.yml

db:  
  image: mysql:latest
  environment:
    MYSQL_DATABASE: app_development
    MYSQL_USER: mysql
    DATABASE_PASSWORD: onetwo
    ROOT_PASSWORD: onetwo
web:
  build: .
  command: bundle exec Rails s -p 3000 -b '0.0.0.0'
  ports:
    - "4000:3000"
  links:
    - db
49
kalelc

Il est fort probable que le conteneur db ne démarre pas.

Assurez-vous qu'il fonctionne correctement en démarrant uniquement le service db. Vous pouvez le faire avec la commande suivante: 

docker-compose up db

S'il apparaît que le service MySQL ne fonctionne pas après cette commande, vous avez trouvé l'origine de votre problème.

65
Thomasleveil

Pas spécifiquement lié à MySQL mais plus au message ERROR: for <service> Cannot link to a non running container: /b2f21b869ccc_<dependency>_1 AS /<service>_1/<dependency>_1 

J'ai trouvé que le conteneur de dépendance avait un identifiant différent de celui indiqué (b2f21b869ccc dans mon exemple ci-dessus)

Résolu simplement en exécutant docker-compose up -d --force-recreate <service>

ce qui l’a amené à recréer la dépendance et à corriger le lien vers le bon identifiant de menu fixe

31
Mike Graf

Pour moi, cela n’a pas aidé à exécuter docker-compose up db.

Cela a fait le tour pour moi:

Sudo service docker restart

puis continuer avec docker-compose up (-d)

22
Ville Laitila

Vous pouvez essayer les nouvelles fonctionnalités du réseau Docker. Pour ce faire, vous devez supprimer le paramètre link de votre docker-compose.yml et initialiser le conteneur avec le --x-networking option .

docker-compose --x-networking up -d

Pour empêcher docker de générer des noms aléatoires pour les conteneurs, qui sont ajoutés au fichier / etc/hosts du réseau respectif pour chaque conteneur, vous pouvez utiliser la clé container_name: dans le docker-compose. yml

db:  
  container_name: db
  image: mysql:latest
  environment:
    MYSQL_DATABASE: app_development
    MYSQL_USER: mysql
    DATABASE_PASSWORD: onetwo
    ROOT_PASSWORD: onetwo
web:
  container_name: web
  build: .
  command: bundle exec Rails s -p 3000 -b '0.0.0.0'
  ports:
    - "4000:3000"
5
JorelC

J'ai eu le même problème pour mssql.link, étant donné que je n'utilise pas de base de données locale (j'utilise plutôt celle que nous avons en staging), tout ce que j'avais à faire est simplement de commenter cette ligne en éditant le script Dockerfile:

# DOCKER_ARGS="${DOCKER_ARGS} --link mssql-server-linux:mssql.link"

Cette solution peut aider quelqu'un ou ne pas être quelqu'un, mais elle l'a triée pour moi :)

0
user4299998

Problème:

  • J'ai eu cette erreur chaque fois que docker-compose réussissait Construit un ensemble de Images, mais l'un de ces Images échoue àrun (par exemple, lance son propre Container).

  • Dans ce cas, je soupçonne que la Image, sous-jacente à votre puma_db_1Container, échoue à run. Vous pouvez .__ trouver le nom de cette Image en exécutant docker ps -a. Cela dit, son nom est très probablement puma_db

Solution: 

  • Pour obtenir la cause, vous pouvez essayer docker-compose up <service_name> ou docker-compose up db 

  • Alternativement, je trouve le message d'erreur en exécutant docker run <image_name> plus utile. Dans ce cas, ce serait docker run puma_db

0
bgerd

J'ai eu le même problème avec elasticsearch - symfony - et docker

Can not link to a non-running container:/43c1d3b410db_myindex_elasticsearch_1 AS /myindex_Apache_1/elasticsearch

la solution consiste à supprimer le contenu du volume de données

 elasticsearch: image: docker.elastic.co/elasticsearch/elasticsearch:5.5.2 Volumes:      - ./docker/volume/elasticsearch: /usr/share/elasticsearch/data et exécutez à nouveau docker-composer up -d.

0
Moccine

Si vous avez démarré le conteneur lets say X avec un lien --link keen_visvesvaraya, puis une fois que X est terminé, le conteneur lié a été arrêté, mais X a continué à s'exécuter. Maintenant, si vous essayez de docker exec dans X, vous obtenez cette erreur.

La solution est de recommencer.

0
sapy