gpt4 book ai didi

docker - Docker网络,从Windows主机连接到linux容器

转载 作者:行者123 更新时间:2023-12-02 21:30:02 25 4
gpt4 key购买 nike

我不确定为什么在Windows 10主机上运行基于Linux的容器时,为什么不能通过容器的IP地址访问,而如果运行Windows容器,则可以。
Linux示例

networks:
team_net:
ipam:
driver: default
config:
- subnet: 172.28.1.0/26

services:
sql:
image: mcr.microsoft.com/mssql/server:latest
networks:
team_net:
ipv4_address: 172.28.1.11
environment:
- ACCEPT_EULA: Y
- SA_PASSWORD: My_password123
volumes:
- "mssql:/var/opt"
restart: unless-stopped

volumes:
mssql:
连接到服务器:172.28.1.11,1433,将拒绝连接。
另外,如果未设置并检查正在运行的容器,则可以看到分配给它的IP地址,但是再次尝试使用它失败。
我不是网络人员,但想知道是否可以直接使用分配给容器的IP地址,然后使用暴露的端口进行连接。如果不可能,那为什么呢?

最佳答案

这是explicitly noted in the Docker Desktop documentation。在许多其他情况下,您无法直接访问容器专用的IP地址:在MacOS主机上;如果您使用的是Docker Toolbox或其他基于VM的解决方案;如果您不在同一台物理主机上。由于这仅适用于很少的环境,因此通常不建议直接使用容器专用IP地址。
但是,无论使用哪种平台,它都可以为您的服务指定ports:,然后使用主机的IP地址(来自容器外部同一主机的localhost;如果使用Docker Toolbox,则为VM的IP地址)访问那些已发布的端口。您几乎永远不需要问题中显示的手动IP配置。

version: '3.8'
# Compose provides a "default" network; just use that
services:
sql:
image: mcr.microsoft.com/mssql/server:latest
# Compose provides
# networks: [default]
# But to make the container accessible
ports:
- '1433:1433' # second port _must_ be 1433, first can be anything
environment:
- ACCEPT_EULA: Y
- SA_PASSWORD: My_password123
volumes:
- "mssql:/var/opt"
restart: unless-stopped
volumes:
mssql:
使用此配置,您可以访问 localhost和端口1433(或者,如果更改了第一个 ports:号,则是该备用端口)。

关于docker - Docker网络,从Windows主机连接到linux容器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64671173/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com