首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将用docker创建的容器连接到另一个用docker运行创建的容器。

问将用docker创建的容器连接到另一个用docker运行创建的容器。
EN

Stack Overflow用户
提问于 2019-08-13 01:25:27
回答 2查看 38关注 0票数 1

我使用创建了以下容器(php:7.2.20-apache):

代码语言:javascript
复制
version: "3"
services
  php72:
    build:
     context: .
    ports:
      - 80:80
    volumes:
      - ./www:/var/www/html

我创建了下面的容器,并运行了docker:

代码语言:javascript
复制
docker run --name mysql5 -p 3306:3306 -v mysql5-data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root -d mysql:5.7.27

我可以用mysql工作台连接到MySQL,但是我在第一个容器中的应用程序(使用docker创建的php7)无法连接到具有相同连接凭据的数据库。

如何解决这个问题?

PS:这是对MacOs中开发环境的测试

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-08-13 01:50:36

您可以管理用户定义的桥接器,以便他们彼此通信,请参阅这,详细信息如下:

1.创建用户定义的桥

代码语言:javascript
复制
$ docker network create my-net

2.将mysql容器链接到此网络

代码语言:javascript
复制
$ docker run --name mysql5 -p 3306:3306 -v mysql5-data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=root -d mysql:5.7.27
$ docker network connect my-net mysql5

配置docker-compose 以使用网络

代码语言:javascript
复制
version: "3"
services
  php72:
    build:
     context: .
    ports:
      - 80:80
    volumes:
      - ./www:/var/www/html

networks:
  default:
    external:
      name: my-net

然后,来自这

用户定义的网桥提供容器之间的自动DNS解析。

您可以使用服务名称或容器名称相互访问。

票数 1
EN

Stack Overflow用户

发布于 2019-08-13 03:36:39

首先,确保在php:7.2.20-apache容器中为数据库使用正确的地址,因为您的MySQL工作台很可能使用不同的ip地址(例如,127.0.0.1),而不是使用php:7.2.20-apache容器(例如,172.19.0.1)。

通过将您的网络列出为

代码语言:javascript
复制
docker network ls

如果它们不是,将它们连接到同一个

代码语言:javascript
复制
docker network connect

用途: docker网络连接选项网络容器(请参阅“码头网络连接--帮助”以获取更多信息)。

您可以通过命令获取有关每个网络的更多信息。

代码语言:javascript
复制
docker network inspect

用途:码头网络检查选项网络.

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57470049

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档