Docker Compose V2 网络错误
Docker Compose V2 network error
我正在尝试在两个容器之间进行通信,但无法做到这一点。
我在 docker compose 中添加了一个名为 'server' 的服务,依赖于另一个名为 'endpoint' 的服务。
我需要将 'endpoint' 的 ip 和端口传递给 'server',我正在做与下面相同的事情
command: -userver -e endpoint:51393
但现在我在使用以下命令的主机列表中看不到 'endpoint':
docker-compose exec server cat /etc/hosts
这是输出:
127.0.0.1 localhost
::1 localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
172.21.0.3 49f4808fa677
我的完整 docker-compose.yml 文件如下:
version: '2'
services:
endpoint:
build:
context: .
dockerfile: Dockerfile
image: myimage_end:0.1
command: -uendpoint
ports:
- 51393:51393
networks:
- internal
server:
build:
context: .
dockerfile: Dockerfile
image: myimage_server:0.1
command: -userver -e endpoint:51393
ports:
- 51392:51392
depends_on:
- endpoint
networks:
- internal
volumes:
- /local_path/dataset:/dataset
networks:
internal:
driver: bridge
当您使用当前版本的 docker compose 时,不再通过操纵容器的主机文件从一个容器访问另一个容器,因为这是一个相当静态的设置。
如今 docker-compose 使用某种 dns 服务,允许同一网络中的所有容器在其服务名称下相互查看。这允许停止依赖容器而不会导致依赖容器也 stop/restart。为此,您也不需要指定 depends_on
。这只需要在重新启动依赖项时触发依赖服务的重新启动。
有关详细信息,请查看有关网络的docker-compose docs。
调试您的情况的一些命令:
docker-compose exec server nslookup endpoint
docker inspect <container_name_of_service>
我正在尝试在两个容器之间进行通信,但无法做到这一点。 我在 docker compose 中添加了一个名为 'server' 的服务,依赖于另一个名为 'endpoint' 的服务。 我需要将 'endpoint' 的 ip 和端口传递给 'server',我正在做与下面相同的事情
command: -userver -e endpoint:51393
但现在我在使用以下命令的主机列表中看不到 'endpoint':
docker-compose exec server cat /etc/hosts
这是输出:
127.0.0.1 localhost
::1 localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
172.21.0.3 49f4808fa677
我的完整 docker-compose.yml 文件如下:
version: '2'
services:
endpoint:
build:
context: .
dockerfile: Dockerfile
image: myimage_end:0.1
command: -uendpoint
ports:
- 51393:51393
networks:
- internal
server:
build:
context: .
dockerfile: Dockerfile
image: myimage_server:0.1
command: -userver -e endpoint:51393
ports:
- 51392:51392
depends_on:
- endpoint
networks:
- internal
volumes:
- /local_path/dataset:/dataset
networks:
internal:
driver: bridge
当您使用当前版本的 docker compose 时,不再通过操纵容器的主机文件从一个容器访问另一个容器,因为这是一个相当静态的设置。
如今 docker-compose 使用某种 dns 服务,允许同一网络中的所有容器在其服务名称下相互查看。这允许停止依赖容器而不会导致依赖容器也 stop/restart。为此,您也不需要指定 depends_on
。这只需要在重新启动依赖项时触发依赖服务的重新启动。
有关详细信息,请查看有关网络的docker-compose docs。
调试您的情况的一些命令:
docker-compose exec server nslookup endpoint
docker inspect <container_name_of_service>