docker--网络和特权模式

简介: docker--网络和特权模式

前戏


使用 docker network --help 来看看都有哪些参数

[root@dce88 ~]# docker network --help
Usage:  docker network COMMAND
Manage networks
Commands:
  connect     Connect a container to a network  # 将一个容器连接到一个网络上
  create      Create a network  # 创建一个网络
  disconnect  Disconnect a container from a network  # 从网络上断开一个容器的连接
  inspect     Display detailed information on one or more networks  # 显示一个或多个网络的详细信息
  ls          List networks  # 查看网络列表
  prune       Remove all unused networks  # 删除所有未使用的网络
  rm          Remove one or more networks  # 删除一个或者多个网络
Run 'docker network COMMAND --help' for more information on a command.

查看网络模式:

docker network ls

默认的三种网络模式:

  • bridge:桥接模式
  • host:主机模式
  • none:无网络模式


bridge 桥接模式


桥接模式是 docker 的默认网络设置,当 Docker 服务启动时,会在主机上创建一个名为 docker0 的虚拟网桥,并选择一个和宿主机不同的 IP 地址和子网分配给 docker0 网桥

在 docker run 的时候使用参数 --net=bridge 指定,不指定默认就是 bridge 模式

当我们启动一个容器时,会桥接到docker0网卡上,在通过Nat技术就实现了外网访问docker容

docker0 是启动 docker 服务时分配的网桥,77和83是启动一个容器时分配的网桥(bridge模式时才会有)


host 模式


host 模式:该模式下容器是不会拥有自己的 ip 地址,而是使用宿主机的 ip 地址和端口

在 docker run 的时候使用参数 --net=host 指定,启动的容器如果指定了使用 host 模式,那么新创建的容器不会创建自己的虚拟网卡,而是直接使用宿主机的网卡和 ip 地址,因此在容器里面查看到的 ip 信息就是宿主机的信息,访问容器的时候直接使用宿主机 ip+容器端口即可,不过容器的其他资源。如文件系统、系统进程等还是和宿主机保持隔离

此模式的网络性能最高,但是各容器之间端口不能相同,适用于运行容器端口比较固定的业务

host 模式不支持端口映射,当指定端口映射的时候会提示如下警告信息

# 使用 --net=host 时,指定 -p 端口映射会被丢弃
[root@dce88 ~]# docker run -it --net=host -p 8888:80 nginx:latest bash
# 警告:使用主机网络模式时,发布的端口会被丢弃。
WARNING: Published ports are discarded when using host network mode
root@dce88:/#

host 模式是使用的宿主机的 ip 和端口,不会生成一个网卡桥接到 docker0 模式。

拉取nginx镜像

docker pull nginx

启动nginx容器,--net=host 指明网络模式为host,如果不指明,默认为bridge

docker run -d --net=host nginx

防火墙放开80端口:

firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --reload

启动容器时没有指定端口号,我们直接访问宿主机的80端口是可以访问到nginx的

host的缺点就是只能启动一个相同的服务,比如nginx镜像的端口都是80,你在宿主机上启动一个就占用了宿主机的80端口,在启动一个nginx就会报错


none模式


none模式:关闭模式

无法连外网

比较少用,了解有这种网络模式即可


特权模式


也比较少用,了解即可

启动一个普通的容器

docker run -itd --name mycentos centos:7 /bin/bash

安装网络工具:

yum -y install net-tools

执行route -n 查看网关

删除网关

route del default gw 172.17.0.1

这样会提示权限

启动拥有特权模式的容器:只需要在启动容器的时候加上--privileged=true就可以了

docker run -itd --privileged=true --name mycentos1 centos:7 /bin/bash

相关文章
|
8天前
|
NoSQL 关系型数据库 MySQL
《docker高级篇(大厂进阶):4.Docker网络》包括:是什么、常用基本命令、能干嘛、网络模式、docker平台架构图解
《docker高级篇(大厂进阶):4.Docker网络》包括:是什么、常用基本命令、能干嘛、网络模式、docker平台架构图解
101 56
《docker高级篇(大厂进阶):4.Docker网络》包括:是什么、常用基本命令、能干嘛、网络模式、docker平台架构图解
|
20天前
|
安全 Docker 容器
docker的默认网络模式有哪些
Docker 默认网络模式包括:1) bridge:默认模式,各容器分配独立IP,可通过名称或IP通信;2) host:容器与宿主机共享网络命名空间,性能最优但有安全风险;3) none:容器隔离无网络配置,适用于仅需本地通信的场景。
34 6
|
23天前
|
存储 缓存 监控
Docker容器性能调优的关键技巧,涵盖CPU、内存、网络及磁盘I/O的优化策略,结合实战案例,旨在帮助读者有效提升Docker容器的性能与稳定性。
本文介绍了Docker容器性能调优的关键技巧,涵盖CPU、内存、网络及磁盘I/O的优化策略,结合实战案例,旨在帮助读者有效提升Docker容器的性能与稳定性。
57 7
|
1月前
|
安全 网络安全 数据安全/隐私保护
利用Docker的网络安全功能来保护容器化应用
通过综合运用这些 Docker 网络安全功能和策略,可以有效地保护容器化应用,降低安全风险,确保应用在安全的环境中运行。同时,随着安全威胁的不断变化,还需要持续关注和研究新的网络安全技术和方法,不断完善和强化网络安全保护措施,以适应日益复杂的安全挑战。
42 5
|
1月前
|
Docker 容器
【赵渝强老师】Docker的None网络模式
Docker容器在网络方面实现了逻辑隔离,提供了四种网络模式:bridge、container、host和none。其中,none模式下容器具有独立的网络命名空间,但不包含任何网络配置,仅能通过Local Loopback网卡(localhost或127.0.0.1)进行通信。适用于不希望容器接收任何网络流量或运行无需网络连接的特殊服务。
|
Cloud Native 网络安全 数据安全/隐私保护
【云原生】Docker网络Overlay搭建Consul实现跨主机通信
【云原生】Docker网络Overlay搭建Consul实现跨主机通信
517 0
|
3月前
|
负载均衡 网络协议 开发者
掌握 Docker 网络:构建复杂的容器通信
在 Docker 容器化环境中,容器间的通信至关重要。本文详细介绍了 Docker 网络的基本概念和类型,包括桥接网络、宿主网络、覆盖网络和 Macvlan 网络等,并提供了创建、管理和配置自定义网络的实用命令。通过掌握这些知识,开发者可以构建更健壮和灵活的容器化应用,提高应用的可扩展性和安全性。
|
2月前
|
监控 Kubernetes 测试技术
掌握Docker网络模式:构建高效容器通信
【10月更文挑战第3天】本文深入探讨了Docker的网络模式,包括它们的工作原理、使用场景以及如何配置和优化容器间的通信。希望能够帮助开发者在项目中有效地应用Docker网络模式,构建高效的容器化应用。
|
3月前
|
网络协议 安全 开发者
掌握 Docker 网络:构建复杂的容器通信
在 Docker 容器化环境中,容器间的通信至关重要。本文详细介绍了 Docker 网络的基础知识,包括网络驱动、端口映射和命名等核心概念,并深入探讨了 Bridge、Host、Overlay 和 Macvlan 四种网络类型的特点及应用场景。此外,还提供了创建、连接、查看和删除自定义网络的命令示例,以及高级网络配置方法,如网络命名空间、DNS 解析和安全通信配置,帮助开发者构建更健壮的容器化应用。
|
存储 Kubernetes 网络协议
Docker | 网络模型以及容器通信
Docker | 网络模型以及容器通信
255 0