【Docker进阶-05】Docker网络

【Docker进阶-05】Docker网络

端口映射

bash 复制代码
docker create -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 --name hello-mysql mysql:5.7

容器互联(不推荐)

--link name:alias ,name连接容器的名称,alias连接的别名

场景:我们无需暴露mysql的情况下,让web应用使用mysql;

bash 复制代码
docker run -d -e MYSQL_ROOT_PASSWORD=123456 --name mysql01 mysql:5.7
docker run -d --link mysql01:mysql --name tomcat tomcat:7
docker exec -it tomcat bash
cat /etc/hosts
ping mysql
bash 复制代码
docker run -d -P --name=tomcat1 --link=redisserver tomcat:jre8-alpine
进入tomcat1后,ping redisserver

link 这种方式容器启动的时候,会查询--link的容器的ip并写死到当前容器的/etc/hosts下面;而且是单向的,对方并不知道我的存在;

问题:redisserver ip地址变了不会更新。

所以不推荐

自定义网络

默认网络原理

Docker使用Linux桥接,在宿主机虚拟一个Docker容器网桥(docker0),Docker启动一个容器时会根据Docker网桥的网段分配给容器一个IP地址,称为Container-IP,同时Docker网桥是每个容器的默认网关。

因为在同一宿主机内的容器都接入同一个网桥,这样容器之间就能够通过容器的Container-IP直接通信。

Docker容器网络就很好的利用了Linux虚拟网络技术,在本地主机和容器内分别创建一个虚拟接口,并让他们彼此联通(这样一对接口叫veth pair);

Docker中的网络接口默认都是虚拟的接口。虚拟接口的优势就是转发效率极高(因为Linux是在内核中进行数据的复制来实现虚拟接口之间的数据转发,无需通过外部的网络设备交换),对于本地系统和容器系统来说,虚拟接口跟一个正常的以太网卡相比并没有区别,只是他的速度快很多。

原理:

1、每一个安装了Docker的linux主机都有一个docker0的虚拟网卡。桥接网卡

2、每启动一个容器linux主机多了一个虚拟网卡。

3、docker run -d -P --name tomcat --net bridge tomcat:8

网络模式

container模式:(事先启动一个名为redisserver的容器)docker run -it --network container:redisserver alpine

host模式:

推荐使用自定义模式:自定义网络模式下,可以用容器名访问

自建网络测试

bash 复制代码
#1、docker0网络的特点。,
默认、域名访问不通、--link 域名通了,但是删了又不行
bash 复制代码
#2、可以让容器创建的时候使用自定义网络,用自定义
1、默认default "bridge"
2、自定义创建一个网络网络
docker network create --driver bridge --subnet 192.168.0.0/16 --gateway 192.168.0.1 mynet
bash 复制代码
#3、跨网络连接别人就用。把tomcat加入到mynet网络
docker network connect [OPTIONS] NETWORK CONTAINER
docker network connect mynet tomcat

效果:
1、自定义网络,默认都可以用主机名访问通
2、跨网络连接别人就用 docker network connect mynet tomcat
bash 复制代码
#4、命令
1、容器启动,指定容器ip。 docker run --ip 192.168.0.3 --net 自定义网络
2、创建子网。docker network create --subnet 指定子网范围 --driver bridge 
3、docker compose 中的网络默认就是自定义网络方式。
docker run -d -P --network 自定义网络名(网络需提前创建)

对比

相关推荐
小杨勇敢飞1 小时前
记录一次 VMware 虚拟机固定 IP 后,FinalShell 连接不上的排查过程
网络·网络协议·tcp/ip
weixin_604236678 小时前
华三 路由器 极简核心配置
运维·服务器·网络·h3c·h3c路由器
梦梦代码精9 小时前
2026年PHP开源商城系统实测对比:架构、多商户、商用授权,谁才是真·省心?
vue.js·docker·架构·开源·代码规范
换个昵称都难12 小时前
webrtc 音频模块FEC模块
网络·音视频·webrtc
鹤落晴春12 小时前
【K8s】Pod调度、configMaps
云原生·容器·kubernetes
youngerwang12 小时前
【从搬运工到协处理器:网卡芯片架构、算法、验证与边缘演进深度剖析】
网络·算法·架构·芯片
极客先躯13 小时前
高级java每日一道面试题-2026年02月02日-实战篇[Docker]-如何实现容器的持久化存储?
docker·容器·面试宝典·持久化·存储·韵味·java高级面试题
My is 李豆14 小时前
CentOS 7 安装 Docker 完整教程(含 docker-compose 插件)
docker·eureka·centos
极客先躯15 小时前
高级java每日一道面试题-2026年02月01日-实战篇[Docker]-Docker Volume 的生命周期管理是怎样的?
java·运维·docker·容器·持久化·架构图·容器卷
智慧光迅AINOPOL15 小时前
校园在线巡课系统方案:督导全覆盖
网络·全光网解决方案·全光网·校园全光网·校园全光网解决方案