Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何手动将docker容器联网_Docker - Fatal编程技术网

如何手动将docker容器联网

如何手动将docker容器联网,docker,Docker,我有两个docker容器: 通过docker compose启动的容器,该容器运行PostgreSQL server,可通过端口5432 通过docker run启动的容器,该容器希望访问该PostgresQL 运行以下命令: docker run -p 80:80 a609c83f4cc3 已成功启动容器,但无法访问PostgreSQL server 12:16:06.192 [error] Postgrex.Protocol (#PID<0.2150.0>) failed

我有两个docker容器:

  • 通过
    docker compose
    启动的容器,该容器运行PostgreSQL server,可通过端口
    5432
  • 通过
    docker run
    启动的容器,该容器希望访问该PostgresQL
运行以下命令:

docker run -p 80:80 a609c83f4cc3
已成功启动容器,但无法访问PostgreSQL server

12:16:06.192 [error] Postgrex.Protocol (#PID<0.2150.0>) failed to connect: ** (DBConnection.ConnectionError) tcp connect (localhost:5432): connection refused - :econnrefused

可以使用以下命令创建网络:

docker network create network_name
然后使用
--network\u name
选项运行容器

您还可以将此网络添加到
docker compose.yml


Docker文档中进一步介绍了Compose networking设置。

您可以使用以下命令创建网络:

docker network create network_name
然后使用
--network\u name
选项运行容器

您还可以将此网络添加到
docker compose.yml


Docker文档中进一步介绍了Compose网络设置。

Compose将自己创建一个名为
default
的网络。与其他Docker对象一样,它的前缀是Compose“project name”,通常是当前目录名。如果运行
docker network ls
,您应该会看到一个名为
something\u default
的网络

获得该网络名称后,可以将其提供给
docker run

docker run --net something_default -p 80:80 a609c83f4cc3

您还必须将应用程序配置为连接到数据库容器;它将不在
localhost
上。独立容器应该仍然能够使用Compose提供的名称,例如,它可以使用Compose服务名称
db
作为标准PostgreSQL端口5432的主机名(
端口:
,如果存在则忽略)。

Compose将自己创建一个名为
default
的网络。与其他Docker对象一样,它的前缀是Compose“project name”,通常是当前目录名。如果运行
docker network ls
,您应该会看到一个名为
something\u default
的网络

获得该网络名称后,可以将其提供给
docker run

docker run --net something_default -p 80:80 a609c83f4cc3

您还必须将应用程序配置为连接到数据库容器;它将不在
localhost
上。独立容器应该仍然能够使用Compose提供的名称,例如,它可以使用Compose服务名称
db
作为标准PostgreSQL端口5432的主机名(
端口:
如果存在则被忽略)。

您基本上有两个选项

选项1: 如果您不熟悉docker网络命令,您可以简单地将Portainer部署为一个容器管理工具,它具有一个非常用户友好的UI,您可以使用该UI更改容器连接到哪个网络

选项2 您需要将第一个容器连接到docker-compose.yml创建的网络

首先,插入postgres容器并确定网络

docker container inspect <postgres_container> | grep Network
docker容器检查| grep网络
然后将第一个容器连接到同一网络

docker network connect <network_name/id> <first_container_name/id>
docker网络连接
然后重新启动第一个容器

docker container restart <first_container_name>
docker容器重启

您基本上有两种选择

选项1: 如果您不熟悉docker网络命令,您可以简单地将Portainer部署为一个容器管理工具,它具有一个非常用户友好的UI,您可以使用该UI更改容器连接到哪个网络

选项2 您需要将第一个容器连接到docker-compose.yml创建的网络

首先,插入postgres容器并确定网络

docker container inspect <postgres_container> | grep Network
docker容器检查| grep网络
然后将第一个容器连接到同一网络

docker network connect <network_name/id> <first_container_name/id>
docker网络连接
然后重新启动第一个容器

docker container restart <first_container_name>
docker容器重启