docker (四)-docker网络

默认网络

docker会自动创建三个网络,bridge,host,none

  • bridge桥接网络

如果不指定,新创建的容器默认将连接到bridge网络。

默认情况下,使用bridge网络,宿主机可以ping通容器ip,容器中也能ping通宿主机。

容器之间只能通过 IP 地址相互访问,由于容器的ip会随着启动顺序发生变化,因此不推荐使用ip访问。

  • host

慎用,可能会有安全问题。

容器与宿主机共享网络,不需要映射端口即可通过宿主机IP访问。(-p选项会被忽略)

主机模式网络可用于优化性能,在容器需要处理大量端口的情况下,它不需要网络地址转换 (NAT),并且不会为每个端口创建"用户空间代理"。

  • none

禁用容器中所用网络,在启动容器时使用。

用户自定义网络

创建用户自定义网络

docker network create my-net

将已有容器连接到此网络

docker network connect my-net db-mysql

docker inspect X 可看到有两个网络:一个默认brige 一个为自定义

docker network disconnect X 断开网络后,查看只有一个网络默认的brige

创建容器时指定网络。

docker run -it --rm --network my-net mysql:5.7 mysql -hdb-mysql -uroot -p

-it:用户可以与容器进行交互 --rm:Docker 在容器停止后立即删除容器

mysql -hdb-mysql: mysql指在容器运行MYSQL客户端, -hdb-mysql MySQL 客户端要连接到的 MySQL 服务器的主机名

在用户自定义网络上,容器之间可以通过容器名进行访问。

用户自定义网络使用 Docker 的嵌入式 DNS 服务器将容器名解析成 IP。

主机名解析

hostname

容器的hostname默认为容器的 ID。

docker run -it -d --hostname my-alpine --name my-alpine alpine:3.15

-d:后台运行

--hostname my-alpine: 这个标志设置容器的主机名为 my-alpine

--name my-alpine: 这个标志为容器指定一个用户定义的名称 my-alpine

容器主机名(内部网络中是唯一)主要用于容器内部网络中的通信和标识,而容器命名则用于 Docker 主机上对容器的管理和引用(主要是给镜像运行的容器一个新名称)。

复制代码
docker inspect \
	--format='{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' my-alpine
/etc/hosts

在容器内手动修改/etc/hosts文件,容器重启后会恢复默认配置。

要是/etc/hosts修改生效,使用--add-host

docker run --add-host=my-alpine:172.17.0.3 -it --rm alpine:3.15

相关推荐
爱宇阳9 分钟前
从容器化到自动化:Vue3 项目 Docker 部署与 GitLab CI/CD 集成 Harbor 全流程
docker·自动化·gitlab
Grass Router 小草聚合路由13 分钟前
GrassRouter融合通信设备-多链路聚合路由在各行业的应急网络中的重要作用和解决方案
网络·多链路聚合·应急保障设备·多链路聚合通信设备·聚合路由·多卡聚合通信设备·5g聚合路由设备
高旭博15 分钟前
10. kubernetes资源——statefulset有状态负载
云原生·容器·kubernetes
我就是一粒沙37 分钟前
网络安全培训
网络·安全·web安全
_Walli_40 分钟前
k8s集群搭建(七)-------- 微服务间的调用
微服务·容器·kubernetes
马达加斯加D1 小时前
k8s --- resource: Pod, ReplicaSet and Deployment
云原生·容器·kubernetes
tang777892 小时前
对抗高级反爬:基于动态代理 IP 的浏览器指纹模拟与轮换策略
网络·网络协议·tcp/ip
oil欧哟2 小时前
Agent 设计与上下文工程- 02 Workflow 设计模式(上)
前端·网络·人工智能
xixixi777773 小时前
了解一个开源网络数据采集软件包——Libcap
网络·安全·工具
嗷嗷哦润橘_3 小时前
集群网络技术1:RDMA和相关协议
网络·阿里云·deepseek