wake-up-neo.net

Docker Kann keine Verbindung zu einem nicht aktiven Container herstellen

Ich muss Rails und Mysql-Container mit Docker-Compose erstellen. Wenn ich versuche, Links zwischen Containern mit docker-compose up zu erstellen, bekomme ich

Container kann nicht gestartet werden 9b271c58cf6aecaf017dadaf5b Verbindung zu einem nicht aktiven Container kann nicht hergestellt werden: /puma_db_1 AS/puma_web_1/db

Dateien

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

Höchstwahrscheinlich startet der db-Container nicht.

Stellen Sie sicher, dass es einwandfrei funktioniert, indem Sie nur den Dienst db starten. Sie können dies mit dem folgenden Befehl tun: 

docker-compose up db

Wenn der MySQL-Dienst nach diesem Befehl nicht ausgeführt wird, haben Sie den Ursprung Ihres Problems gefunden.

65
Thomasleveil

Nicht speziell auf MySQL bezogen, sondern eher die Nachricht ERROR: for <service> Cannot link to a non running container: /b2f21b869ccc_<dependency>_1 AS /<service>_1/<dependency>_1 

Ich habe festgestellt, dass der Abhängigkeitscontainer eine andere ID hat als die angegebene (b2f21b869ccc in meinem obigen Beispiel).

Wird einfach durch Ausführen von docker-compose up -d --force-recreate <service> gelöst.

dies führte dazu, dass die Abhängigkeit wiederhergestellt und der Link auf die korrekte Docker-ID korrigiert wurde

31
Mike Graf

Für mich half es nicht, Docker-Composition up db auszuführen.

Das hat den Trick für mich gemacht:

Sudo service docker restart

und dann weiter mit Docker-Compose (-d)

22
Ville Laitila

Sie können die neuen Funktionen des Docker-Netzwerks ausprobieren. Dazu müssen Sie den link -Parameter in Ihrer docker-compose.yml entfernen und den Container mit dem --x-networking option initialisieren.

docker-compose --x-networking up -d

Um zu verhindern, dass Docker zufällige Namen für die Container generiert, die für jeden Container zur Datei / etc/hosts des jeweiligen Netzwerks hinzugefügt werden, können Sie die Taste container_name: im docker-compose verwenden. 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

Ich hatte das gleiche Problem für mssql.link, da ich keine lokale Datenbank verwende (und nicht die, die wir beim Staging haben). Alles, was ich tun musste, war, diese Zeile durch Kommentieren des Dockerfile-Skripts zu kommentieren:

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

Diese Lösung kann jemandem helfen oder niemand sein, aber es hat es für mich sortiert :)

0
user4299998

Problem:

  • Ich habe diese Fehlermeldung erhalten, wenn docker-compose erfolgreich Einen Satz von Images erstellt, einer dieser Images jedoch nicht funktioniertrun (z. B. in sein eigenes Container).

  • In diesem Fall vermute ich, dass Image, das Ihrem puma_db_1Container zugrunde liegt, mit run fehlschlägt. Sie können Den Namen dieser Image finden, indem Sie docker ps -a ausführen. Das heißt, der Name ist höchstwahrscheinlich puma_db

Lösung: 

  • Um die Ursache zu ermitteln, können Sie docker-compose up <service_name> oder docker-compose up db versuchen. 

  • Alternativ finde ich die Fehlermeldung, indem docker run <image_name> nützlicher ausgeführt wird. In diesem Fall wäre das docker run puma_db

0
bgerd

Ich hatte das gleiche Problem mit Elasticsearch - Symfony - und Docker

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

die Lösung besteht darin, den Inhalt des Datenvolumens zu löschen

 elasticsearch: image: docker.elastic.co/elasticsearch/elasticsearch:5.5.2 Volumes:      - ./docker/volume/elasticsearch: /usr/share/elasticsearch/data und führen Sie docker-composer up -d erneut aus.

0
Moccine

Wenn Sie den Container lets say X mit einem Link --link keen_visvesvaraya gestartet haben und sobald X aktiv ist, wurde der verknüpfte Container angehalten, aber X lief weiter. Wenn Sie nun versuchen, docker exec in X zu konvertieren, wird diese Fehlermeldung angezeigt.

Yah Lösung ist neu zu starten.

0
sapy