簡體   English   中英

從Docker容器連接到另一個Docker容器的端口

[英]Connect from a Docker container to port of another docker container

我有兩個在Linux主機上運行的docker容器。

一個帶有數據庫,另一個帶有應用程序。

如何從容器APPLICATION連接到容器DATABASE端口5432?

例如:我啟動DATABASE容器,並使用“ -p5432:5432將端口5432綁定到主機localhost。但是如何從APPLICATION中訪問該端口呢?我無法將端口5432綁定到主機localhost,因為該端口現已被使用。

Docker版本1.12.6

更新

我現在用

sudo docker network create --subnet=172.20.0.0/16 --gateway=172.20.0.100   --ip-range=172.20.1.0/24 my-network
sudo docker run --name postgres  --network=my-network --ip=172.20.0.10 -d postgres
sudo docker run --name application --network=my-network --ip=172.20.0.15 -d application

和配置的應用程序在APPLICATION容器中查找ip 172.20.0.10

https://docs.docker.com/engine/userguide/networking/work-with-networks/

或者,您可以使用docker-compose輕松實現的docker網絡。 在我的示例中,您可以從app容器指向postgres-container如下所示: postgres-container:5432

docker-compose.yml:

version: "3"

services:
  app:
    image: postgres
    command: sh -c 'sleep 10; echo \\l | PGPASSWORD=mysecretpassword psql -U postgres -h postgres-container'
  postgres-container:
    image: postgres
    environment:
      - POSTGRES_PASSWORD=mysecretpassword

命令:

docker-compose up

輸出:

Attaching to postgresql_app_1, postgresql_postgres-container_1
(...)
postgres-container_1  | server started
(...)
app_1                 |                                  List of databases
app_1                 |    Name    |  Owner   | Encoding |  Collate   |   Ctype    |   Access privileges
app_1                 | -----------+----------+----------+------------+------------+-----------------------
app_1                 |  postgres  | postgres | UTF8     | en_US.utf8 | en_US.utf8 |
app_1                 |  template0 | postgres | UTF8     | en_US.utf8 | en_US.utf8 | =c/postgres          +
app_1                 |            |          |          |            |            | postgres=CTc/postgres
app_1                 |  template1 | postgres | UTF8     | en_US.utf8 | en_US.utf8 | =c/postgres          +
app_1                 |            |          |          |            |            | postgres=CTc/postgres
app_1                 | (3 rows)
app_1                 |
  1. 您可以使用docker link鏈接到正在運行的容器...如下所示,並使用別名作為ip地址。 您也可以使用docker-compose做同樣的事情。

    $ docker run -d -P --name應用程序--link db-image:db application-image

在應用程序中使用“ db”作為主機名。

  1. 您還可以將主機IP分配給應用程序容器作為db端點。 它會工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM