Docker无法链接到未运行的容器。

31 浏览
0 Comments

Docker无法链接到未运行的容器。

我需要使用docker-compose创建Rails和Mysql容器。当我尝试使用docker-compose up命令在容器之间创建连接时,我遇到了以下错误:

无法启动容器

9b271c58cf6aecaf017dadaf5b 无法链接到未运行的容器:

/puma_db_1 作为 /puma_web_1/db

文件:

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

0
0 Comments

Docker Cannot link to a non running container问题的出现原因是,依赖的容器的ID与给定的ID不一致。解决方法是通过运行docker-compose up命令来重新创建依赖,并修复与正确的Docker ID的链接。另外,还可以通过运行docker rm命令并替换其中的容器ID来解决该问题。以下是具体的解决方法:

docker-compose up -d --force-recreate 

docker-compose rm

或者

docker rm CONTAINER_ID

0
0 Comments

问题原因:在这种情况下,最有可能的原因是`db`容器启动失败。可以通过仅启动`db`服务来确保它正常运行。可以使用以下命令来实现:

docker-compose up db

如果在执行此命令后发现MySQL服务未运行,则找到了问题的根源。这指向了正确的方向。通常,如果链接的容器启动失败,您会看到这个错误消息。有趣的是,错误消息没有告诉我这一点。

解决方法:修复`db`容器的启动问题,确保MySQL服务能够正常运行。

0
0 Comments

Docker Cannot link to a non running container 这个问题的出现的原因是因为容器没有运行。解决这个问题的方法是重新启动 Docker 服务。

对于我来说,运行 docker-compose up db 没有帮助。

以下方法对我有效:

sudo service docker restart

然后继续运行 docker-compose up (-d)

这对我也有效,可能是因为我刚刚安装了 docker-engine 并且没有重启服务器。尽管 docker-engine 似乎正常工作,但重新启动它显然解决了一些问题。

0