一文解读Docker 网络Network

简介: 一文解读Docker 网络Network

基本介绍

Docker网络是Docker容器之间和容器与外部网络之间的通信和连接的一种机制。在Docker中,每个容器都可以有自己的网络栈,包括网络接口、IP地址和网络配置。Docker网络提供了一种灵活且可定制的方式,使得容器之间可以相互通信,并与主机或其他网络资源进行交互。

在docker中,重启后ip是会变的;docker默认采用bridge连接,启动容器的时候会按照顺序来获取对应ip地址,这就导致容器每次重启后ip都会发生变化。

也就是说容器间使用ip地址来进行通信的话,一旦有容器重启,重启的容器将不再能被访问到。Docker网络就能够解决这个问题。

Docker网络作用:容器之间的互联以及端口映射容器IP变动的时候可以通过服务名直接网络通信而不受影响

四种网络模式

网络模式 简介
Bridge(默认) 此模式会为每一个容器分配、设置IP等,并将容器连接到一个docker0虚拟网桥,通过docker0网桥以及Iptables nat表配置与宿主机通信。
Host 容器将不会虚拟出自己的网卡,配置自己的IP等,而是使用宿主机的IP和端口。
Container 创建的容器不会创建自己的网卡,配置自己的IP,而是和一个指定的容器共享IP、端口范围。
None 该模式关闭了容器的网络功能,与宿主机、与其他容器都不连通的.

在使用docker run创建Docker容器时,可以用 --net 选项指定容器的网络模式,Docker可以有以下4种网络模式:

  • bridge模式:使用 --net=bridge 指定,默认设置
  • host模式:使用 --net=host 指定。
  • none模式:使用 --net=none 指定。
  • container模式:使用 --net=container:NAME_or_ID 指定。

Bridge模式

Docker 服务默认会创建一个 docker0 网桥(其上有一个 docker0 内部接口),该桥接网络的名称为docker0,它在内核层连通了其他的物理或虚拟网卡,这就将所有容器和本地主机都放到同一个物理网络。Docker 默认指定了 docker0 接口 的 IP 地址和子网掩码,让主机和容器之间可以通过网桥相互通信。

Container 模式

新建的容器和已经存在的一个容器共享一个网络ip配置而不是和宿主机共享。在创建容器时通过参数 --net container:已运行的容器名称|ID 或者 --network container:已运行的容器名称|ID 指定。

Host 模式

直接使用宿主机的 IP 地址与外界进行通信,不再需要额外进行NAT 转换。使用host 网络模式需要在创建容器时通过参数 --net host 或者 --network host 指定,使用了host网络模式就不需要使用-p指定端口号,通过-p设置的参数将不会起到任何作用,端口号会以主机端口号为主,重复时则递增。

Docker安装完成时,一般会自动创建三个网络,查看命令:

docker network ls
NETWORK ID          NAME                DRIVER              SCOPE
50527f813731        bridge              bridge              local
d40bdb2f0342        host                host                local
7a7b8938f822        none                null                local

常用命令

命令 作用
docker network connect 将容器连接到网络
docker network create   创建网络
docker network disconnect 断开容器与网络的连接
docker network inspect 显示一个或多个网络上的详细信息
docker network ls 列举所有网络
docker network prune 删除所有未使用的网络
docker network rm 删除一个或多个网络

1、创建网络 test-network

docker network create test-network

2、将php容器或其他容器加入到test-network网络

docker network connect test-network php

3、 查看网络

docker network ls

4、 断开和移除网络

移除网络之前需要断开所有连接到网络的容器:docker network disconnet test-network php

移除网络:docker network rm test-network

5、 查看网络内部信息

docker network inspect test-network


相关文章
|
1月前
|
存储 测试技术 数据安全/隐私保护
【Docker项目实战】使用Docker部署DailyTxT加密日记网络应用程序
【4月更文挑战第6天】使用Docker部署DailyTxT加密日记网络应用程序
55 1
|
2月前
|
应用服务中间件 nginx Docker
Docker网络管理
Docker网络管理
29 1
|
6天前
|
运维 安全 Linux
深入理解Docker自定义网络:构建高效的容器网络环境
深入理解Docker自定义网络:构建高效的容器网络环境
|
6天前
|
运维 Linux 虚拟化
Docker详解(十四)——Docker网络类型详解
Docker详解(十四)——Docker网络类型详解
18 0
|
7天前
|
Kubernetes Docker 容器
【Docker专栏】Docker网络配置详解:从Bridge到Overlay
【5月更文挑战第7天】本文介绍了Docker的四种网络类型:Bridge(默认,每个容器连接虚拟桥)、Host(容器共享宿主机网络命名空间)、Overlay(跨宿主机通信,适合集群环境)和Macvlan(容器直接连接物理网络)。Bridge网络适用于同主机通信,而Overlay适合多主机集群。Host网络缺乏隔离,Macvlan则让容器直接连到外部网络。理解这些网络类型有助于优化Docker容器的网络配置。
【Docker专栏】Docker网络配置详解:从Bridge到Overlay
|
23天前
|
运维 前端开发 Devops
云效产品使用报错问题之流水线打包docker镜像时报网络代理有问题如何解决
本合集将整理呈现用户在使用过程中遇到的报错及其对应的解决办法,包括但不限于账户权限设置错误、项目配置不正确、代码提交冲突、构建任务执行失败、测试环境异常、需求流转阻塞等问题。阿里云云效是一站式企业级研发协同和DevOps平台,为企业提供从需求规划、开发、测试、发布到运维、运营的全流程端到端服务和工具支撑,致力于提升企业的研发效能和创新能力。
|
监控 安全 Docker
《Docker 简易速速上手小册》第6章 Docker 网络与安全(2024 最新版)
《Docker 简易速速上手小册》第6章 Docker 网络与安全(2024 最新版)
30 0
|
1月前
|
网络协议
centos8 网卡 Nmcli(是network的简写 Nmcli)配置网络
centos8 网卡 Nmcli(是network的简写 Nmcli)配置网络
41 0
|
1月前
|
NoSQL 应用服务中间件 Linux
docker网络
docker网络
|
2月前
|
PHP Docker 容器
docker基本命令network的使用以及基本命令
docker基本命令network的使用以及基本命令
21 0