栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

Docker容器IP访问容器服务

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Docker容器IP访问容器服务

前言

使用 Docker 搭建了一些服务,每一次新增服务,都需要在 nginx 的容器做一些操作。

于是乎,就探究探究能不能直接通过 容器IP+端口 来访问容器中的服务。

环境

WindowsHyper-VUbuntu 20.04(虚拟机)dockerdocker-compose 准备工作

若容器是在虚拟机内,则需要先固定虚拟机的 IP。

关于 Hyper-V 的虚拟机 IP 固定操作可以参考 Hyper-V固定虚拟机IP;

docker-compose.yml 编写注意点

为了能够保证每次容器获取到的 IP 都是固定的,所以需要定义网段和为每个容器指定 IP

demo 如下:

version: "3"
services:
    mysql:
        image: mysql:8
        command: --default-authentication-plugin=mysql_native_password
        environment:
            - MYSQL_PASSWORD=123456
            - MYSQL_ROOT_PASSWORD=123456
        container_name: mysql
        restart: always
        networks:
            default:
                ipv4_address: 172.19.0.1
    redis:
        image: redis:6.2.2-alpine
        ports: 
            - "6379:6379"
        volumes:
            - ./redis/data:/data
        container_name: redis
        restart: always
        networks:
            default:
                ipv4_address: 172.19.0.2
    php56:
        image: php:5.6-fpm-alpine
        environment:
            TZ : 'Asia/Shanghai'
        restart: always
        container_name: php5.6
        networks:
            default:
                ipv4_address: 172.19.0.56
    php73:
        image: php:7.3.18-fpm-alpine
        environment:
            TZ : 'Asia/Shanghai'
        restart: always
        container_name: php5.6
        networks:
            default:
                ipv4_address: 172.19.0.73
networks:
    default:
        ipam:
            config:
            - subnet: 172.19.0.0/16

这个时候,若是 Linux 环境,是可以直接通过 IP 访问容器了。

容器IP通过虚拟机路由到宿主机 虚拟机开启路由转发
sudo sed -i 's!#net.ipv4.ip_forward=1!net.ipv4.ip_forward=1!g' /etc/sysctl.conf
sudo sysctl -p /etc/sysctl.conf
sudo iptables -P FORWARD ACCEPT
windows开启路由转发
    获取虚拟机的IP
ifconfig eth0

结果如下(192.168.137.128):

eth0: flags=4163  mtu 1500
        inet 192.168.137.128  netmask 255.255.255.0  broadcast 192.168.137.255
        inet6 fe80::215:5dff:fe2a:9b0a  prefixlen 64  scopeid 0x20
        ether 00:15:5d:2a:9b:0a  txqueuelen 1000  (Ethernet)
        RX packets 812947  bytes 916704076 (916.7 MB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 481002  bytes 77532801 (77.5 MB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
    windows上通过 powershell 查看路由表
route print 172.19.0.0

结果如下(路由表没数据):

===========================================================================
接口列表
 12...00 15 5d 2a 9b 09 ......Hyper-V Virtual Ethernet Adapter #2
 14...e4 54 e8 c4 ad fc ......Realtek PCIe GbE Family Controller
  1...........................Software Loopback Interface 1
 25...00 15 5d 6c 85 b7 ......Hyper-V Virtual Ethernet Adapter
===========================================================================

IPv4 路由表
===========================================================================
活动路由:
  无
永久路由:
  无

IPv6 路由表
===========================================================================
活动路由:
  无
永久路由:
  无
    windows使用管理员权限打开 powershell 添加路由表
# 下面的命令是添加永久路由的,若不需要添加永久路由,可以去掉 -p
# 172.19.0.0 是虚拟机中Docker的IP段
# 255.255.255.0 写死就好
# 192.168.137.128 是虚拟机的IP
route add -p 172.19.0.0 mask 255.255.255.0 192.168.137.128
    windows再次查看路由表
===========================================================================
接口列表
 12...00 15 5d 2a 9b 09 ......Hyper-V Virtual Ethernet Adapter #2
 14...e4 54 e8 c4 ad fc ......Realtek PCIe GbE Family Controller
  1...........................Software Loopback Interface 1
 25...00 15 5d 6c 85 b7 ......Hyper-V Virtual Ethernet Adapter
===========================================================================

IPv4 路由表
===========================================================================
活动路由:
网络目标        网络掩码          网关       接口   跃点数
       172.19.0.0    255.255.255.0  192.168.137.128    192.168.137.1     16
===========================================================================
永久路由:
  网络地址          网络掩码  网关地址  跃点数
       172.19.0.0    255.255.255.0  192.168.137.128       1
===========================================================================

IPv6 路由表
===========================================================================
活动路由:
  无
永久路由:
  无

完成

最后

再也不用担心新增/修改服务时,影响其他服务了。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/724535.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号