首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >链接php容器和mongodb容器

链接php容器和mongodb容器
EN

Stack Overflow用户
提问于 2019-11-04 21:16:43
回答 3查看 800关注 0票数 0

我是新来的码头和蒙哥大的。我有一个带有数据库和集合的mongodb容器。我使用以下命令使用php和apache创建了另一个容器:

代码语言:javascript
复制
docker run -d -p 8020:80 --name my-php-apache php:7-apache

为了能够连接到mongodb容器(Mongo),我需要将这个容器链接到mongodb容器。因此,我使用以下命令链接两个容器:

代码语言:javascript
复制
docker run -d -p 8020:80 --link my-mongo --name php-mongo-link php:7-apache

但它显示了以下错误:

代码语言:javascript
复制
b36e400bb5c0d229f952a7b365d5a8bfed402410bdb5a802f29fd2fdc1ef28f9

docker: Error response from daemon: driver failed programming external connectivity on endpoint php-mongo-link (ec4eb66d0a314201c99f79eb4a09cf82ffb2fc399647020adaf34932878857b7): Bind for 0.0.0.0:8020 failed: port is already allocated.

要连接容器,php (8020:80)和的端口应该是相同的吗?还是应该是不同的?有没有更好的方法链接2容器(php和mongodb)?我只需要从php容器连接到mongodb容器,就可以在mongodb数据库中插入一些数据。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-11-05 10:35:45

你不应该在现代码头上使用docker run --link。您需要创建一个码头网络 (默认设置很好),然后运行连接到该网络的两个容器。使用容器的--name作为主机名,容器将能够相互访问。

代码语言:javascript
复制
docker network create myapp
docker run \
  -d \                 # in the background
  --net myapp \        # attached to the network
  -v ... \             # with persistent storage
  --name my-mongodb \
  mongo:4.2
docker run \
  -d \                 # in the background
  --net myapp \        # attached to the network
  -p 8020:80 \         # accessible from outside
  --name my-php-apache \
  -e MONGO_URL=mongodb://my-mongodb:27017 \
  php:7-apache

(如果您使用Docker,它会自动完成这个设置。.)

每次您docker run某个东西时,它都会创建一个新容器。链接是容器的一个属性,它允许它连接到Docker 1.0之前存在的网络模型中的特定其他容器;在启动第一个容器时需要指定它。在您的示例中,您正在运行一个容器,然后使用链接设置运行该容器的第二个副本;因为两个容器都发布了相同的主机端口(-p 8020:...),因此会出现冲突。如果要使用--link,它将位于第一个docker run命令上,而不需要第二个命令。

票数 0
EN

Stack Overflow用户

发布于 2019-11-05 02:59:28

问题是,您在同一个端口8020上公开了两个容器,因此必须侦听8021

https://docs.docker.com/engine/reference/commandline/run/提取液

发布或公开端口(-p,--公开) $ docker运行-p 127.0.0.1:80:8080/tcp ubuntu 这将容器的端口8080绑定到主机的127.0.0.1上的TCP端口80。还可以指定udp和sctp端口。“码头用户指南”详细解释了如何操作Docker中的端口。

票数 1
EN

Stack Overflow用户

发布于 2019-11-04 21:34:48

手将两个容器绑定到主机maschine上的同一个端口。两者都绑定到端口80。您应该为第二个集装箱使用另一个端口,如81。

代码语言:javascript
复制
docker run -d -p 8020:81 --link my-mongo --name php-mongo-link php:7-apache
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58701187

复制
相关文章

相似问题

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