深入解析:开源的容器化平台:Docker

news/2025/10/12 13:44:05/文章来源:https://www.cnblogs.com/yxysuanfa/p/19136564

文章目录

  • Docker全阶段
    • 一、Docker发展与简介
      • 1. 云服务与虚拟化基础
        • 1.1 云服务模型介绍
          • 1.1.1 IaaS(基础设施即服务)
          • 1.1.2 PaaS(平台即服务)
          • 1.1.3 SaaS(软件即服务)
          • 1.1.4 DaaS(数据即服务)
        • 1.2 常见云服务提供商
      • 2. 虚拟化技术概述
        • 2.1 虚拟化基础
          • 2.1.1 虚拟化类型
          • 2.1.2 虚拟化产品
      • 3. Docker简介及其重要性
        • 3.1 为什么使用 Docker
        • 3.2 Docker 发展历史
        • 3.3 Docker 版本:CE vs EE
        • 3.4 Docker 与传统虚拟化的区别
        • 3.5 容器化技术的生态系统
        • 3.6 Docker 容器的优势
        • 3.7 容器技术的应用场景
      • 4. Docker 基础概念
        • 4.1 Docker 简介
          • 4.1.1 Docker 的 Logo 设计
          • 4.1.2 Docker 的设计宗旨
          • 4.1.3 容器化的优势
          • 4.1.4 Docker 容器与虚拟机的区别
          • 4.1.5 Linux 六大命名空间
          • 4.1.6 Docker 架构以及组件
          • 4.1.7 Docker 的核心技术
        • 4.2 Docker 核心概念
        • 4.3 Docker 安装与配置
    • 二、Docker 容器管理
      • 1. Docker 镜像操作
        • 1.1 搜索镜像
        • 1.2 获取镜像
        • 1.3 镜像加速下载
          • 1.3.1 阿里云加速器
          • 1.3.2 华为加速器
        • 1.4 查看镜像信息
          • 1.4.1 查看本地所有镜像
        • 1.5 获取镜像详细信息
        • 1.6 为本地镜像添加标签
        • 1.7 删除镜像
        • 1.8 存储镜像(导出)
        • 1.9 载入镜像(导入)
        • 1.10 上传镜像到 Docker Hub
          • 1.10.1 标签镜像
          • 1.10.2 登录 Docker Hub
          • 1.10.3 上传镜像
      • 2. Docker 容器操作
        • 2.1 创建容器
        • 2.2 启动容器
        • 2.3 停止容器
        • 2.4 查看容器状态
        • 2.5 创建并启动容器
        • 2.6 在后台持续运行 docker run 创建的容器
        • 2.7 容器交互
        • 2.8 复制到容器中
        • 2.9 容器的导出与导入
        • 2.10 删除容器
    • 三、Docker 网络管理
      • 1. Docker 网络实现原理
      • 2. Docker 的网络模式
        • 2.1 host模式
        • 2.2 Container模式
        • 2.3 无网络模式(none)
        • 2.4 桥接模式(bridge)
        • 2.5 自定义模式
      • 3. 总结


Docker全阶段

一、Docker发展与简介

1. 云服务与虚拟化基础

1.1 云服务模型介绍

云计算是通过网络为用户提供可伸缩的计算资源。云服务通常分为以下几种类型:

1.1.1 IaaS(基础设施即服务)
  • 提供虚拟化计算资源(如虚拟机、存储、网络等)。
  • 用户可以灵活配置自己的计算环境,负责安装操作系统、管理资源等。
  • 优点:灵活度高、可扩展性强。
  • 缺点:管理复杂,需要较多技术支持。
1.1.2 PaaS(平台即服务)
1.1.3 SaaS(软件即服务)
  • 提供已经构建好的应用程序,用户可以直接使用,无需安装和维护。
  • 优点:快速部署,省时省力。
  • 缺点:定制化差,依赖于服务提供商。
1.1.4 DaaS(数据即服务)
1.2 常见云服务提供商
  • 阿里云腾讯云AWSGoogle Cloud华为云等是市场上主要的云服务提供商。
  • 云服务提供商通常提供各种服务,如存储、计算、网络、CDN 等。

2. 虚拟化技术概述

2.1 虚拟化基础
2.1.1 虚拟化类型
2.1.2 虚拟化产品
  • VMware:广泛使用的企业级虚拟化平台,支持全虚拟化和半虚拟化。
  • KVM:Linux 内核中的虚拟化解决方案,支持硬件虚拟化。
  • Hyper-V:由微软推出的虚拟化平台,集成于 Windows Server 中。
  • VirtualBox:适用于个人和开发者的虚拟化产品,跨平台支持(Linux、macOS、Windows)。
  • EXSI 虚拟化
    • 学习链接:
      • ① 简单理解:https://baike.baidu.com/item/VMware%20vSphere/1716985?fromModule=lemma_inlin
      • ② ESXi教程安装:https://blog.csdn.net/G_D0120/article/details/138537920

3. Docker简介及其重要性

3.1 为什么使用 Docker

Docker 是一种容器化技术,它使得开发者可以将应用及其依赖打包到一个标准化的容器中,从而在任何环境下都能一致地运行。这个概念类似于将应用放入一个容器(集装箱),无论容器被移动到哪个环境,它都能保持原有的运行状态。

容器技术相比传统的虚拟化技术(如 VMware)具有显著优势。传统虚拟化需要在每个虚拟机中运行完整的操作系统,资源消耗大,而 Docker 仅在宿主操作系统上运行多个隔离的容器,不需要完整的操作系统,大大减少了系统开销和资源浪费。

通过 Docker,应用可以更轻松地实现跨平台部署和运行。举个例子,一辆兰博基尼应用程序被装进集装箱(容器),可以在不同的操作系统上(如 CentOS 到 Ubuntu)无缝迁移,确保应用始终以相同的方式运行。

3.2 Docker 发展历史

Docker 是由 Solomon Hykes 和他团队在 2013 年从 DotCloud 开始开发的。它的最初目标是利用容器技术提供一种新的应用部署方式。Docker 从一开始就有了强大的生态系统和社区支持,迅速发展并成为全球最流行的容器化平台。

主要的发展节点包括:

  • 2013年:Docker 项目发布;
  • 2014年:Docker 公司成立;
  • 2015年:Docker 发布了重要的版本 1.8,引入了新的网络架构和卷管理;
  • 2017年:发布了 Docker Enterprise Edition(企业版)和 Docker Community Edition(社区版),并开始了时间驱动的版本发布。
  • 2018年Docker 18.09 发布,加入了新的构建功能和改进的性能,重点是多阶段构建(Multi-stage Builds)和新的容器日志功能。Docker 的 Kubernetes 集成 开始,推出了 Docker Desktop 中的 Kubernetes 支持,使得开发者可以在本地轻松使用 Kubernetes 来部署和管理容器。
  • 2019年Docker 19.03 发布,新增了对 GPU 加速 的支持,以及 Docker CLI 的改进。此外,Docker 为 Kubernetes 提供了更好的支持。Docker Desktop 的更新增强了与 Kubernetes 的集成,支持在 Windows 和 macOS 上直接运行 Kubernetes 集群。Docker 提出了 Docker Desktop for Windows 和 macOS,为开发者提供了一个跨平台、统一的开发环境,结合了 Docker 引擎和 Kubernetes。
  • 2020年Docker 20.10 发布,新增了对 Docker Compose v2 的支持,并在性能、功能和稳定性方面进行了一系列增强。Docker 宣布将 Docker SwarmKubernetes 的集成进行区分,Kubernetes 成为 Docker 引擎推荐的容器编排工具。Docker 开始更加聚焦于开发者工具,而逐渐减少对企业级 Kubernetes 的直接支持,特别是在容器编排方面。
  • 2021年:Docker 进一步优化了其本地开发工具,使得开发者能够更容易在本地环境中使用容器和 Kubernetes 进行集成。Docker HubDocker Desktop 的改进,使得 Docker 的云端镜像存储和本地开发环境更加流畅。
  • 2022年:Docker 继续加大对 开发者体验 的关注,推出了对 GitHub 等工具的深度集成,帮助开发者快速构建和部署容器。在企业领域,Docker 企业版继续被 Kubernetes 和其他工具组合使用,尤其是对于 CI/CDDevOps 环境中的大规模部署。
  • 2023年Docker 23.x 发布,进一步增强了对 云原生应用 的支持,特别是对 Kubernetes 生态系统的集成增强。Docker 在容器优化、安全性和持续集成/持续交付(CI/CD)方面继续推出新功能,提升了企业级应用部署的效率和安全性。Docker 提供了更多对 开源 和社区驱动的工具的支持,力求保持其在容器生态中的主导地位。
3.3 Docker 版本:CE vs EE

Docker 提供了两个主要版本:

每个版本的发布周期不同,CE 通常每个月发布新版本,而 EE 版本则会有更长的维护周期。

3.4 Docker 与传统虚拟化的区别

Docker 通过操作系统级虚拟化(LXC)提供轻量级的虚拟化,容器之间共享宿主机的操作系统内核,因此相比传统虚拟机,Docker 容器更加轻便、高效。

  • 传统虚拟机:每个虚拟机都包含完整的操作系统,资源占用大。
  • Docker 容器:共享宿主操作系统的内核,启动快,占用少,易于管理。
3.5 容器化技术的生态系统

容器技术是一种轻量级、提供隔离的虚拟化技术。这里是一些知名的容器技术:

  1. Docker:市场上最为知名和流行的容器框架之一,拥有生态系统完善且社区活跃的优秀特点。它通过简单的工具和接口,使得应用程序的部署于测试过程更为简单。
  2. Kubernetes:Google 开发并开源的容器编排平台,可以管理、调度和扩展容器的应用。
  3. OpenShift:是 Red Hat 提供的开源的容器平台,基于 Kubernetes,但提供了更丰富的功能。
  4. LXC: Linux 容器技术,比 Docker 更接近传统的虚拟化技术,可以看作是轻量级的 VM(虚拟机)。
  5. Rkt:由 CoreOS 开发的一种容器技术,设计上有别于 Docker,它更注重于安全性和模块化。
  6. Apache Mesos:一种用于大规模数据中心的容器编排平台,特别地,它可以与其他调度系统如 Marathon、Chronos 或 Jenkins 集成。
  7. Containerd:是一个开源的容器运行时,是 Docker 的核心组件之一,可用于管理完整的容器生命周期。
  8. Crio:是一个轻量级的容器运行时,专门用于 Kubernetes。
  9. Singularity:一款专注于面向性能敏感和计算密集型应用程序的容器技术。
  10. Podman:与 Docker 相似,但无需守护进程,支持运行和管理 OCI 容器和镜像。
3.6 Docker 容器的优势
  • 移植性:应用和其依赖打包在容器中,跨平台和跨环境运行无缝。
  • 隔离性:容器内的应用互相隔离,不会影响宿主机或其他容器。
  • 效率高:由于不需要完整的操作系统,容器消耗的资源少,启动速度快。
  • 简化部署:通过 Docker,可以轻松创建、复制、修改和删除容器,简化了应用部署和管理的复杂度。
3.7 容器技术的应用场景

4. Docker 基础概念

4.1 Docker 简介
4.1.1 Docker 的 Logo 设计

Docker 的 Logo 设计为一条蓝色鲸鱼,拖着许多集装箱。鲸鱼代表宿主机,集装箱代表相互隔离的容器,每个集装箱中都包含自己的应用程序。

4.1.2 Docker 的设计宗旨

Docker 的设计宗旨是 Build, Ship and Run Any App, Anywhere。通过对应用组件的封装、发布、部署、运行等生命周期的管理,达到应用组件级别的“一次封装,到处运行”的目的。这里的组件可以是一个应用、一套服务,甚至是一个完整的操作系统。

4.1.3 容器化的优势
  • 灵活:即使是最复杂的应用也可以集装箱化。
  • 轻量级:容器利用并共享主机内核。
  • 可互换:可以即时部署更新和升级。
  • 便携式:可以在本地构建,部署到云,并在任何地方运行。
  • 可扩展:可以增加并自动分发容器副本。
  • 可堆叠:可以垂直和即时堆叠服务。
4.1.4 Docker 容器与虚拟机的区别

容器共享宿主机的操作系统内核,而虚拟机则需要运行独立的操作系统。

特性Docker 容器虚拟机
启动速度秒级分钟级
计算能力损耗几乎无损耗 50%左右
性能接近原生弱于
系统支持量(单机)上千个几十个
隔离性资源隔离/限制完全隔离
4.1.5 Linux 六大命名空间
命名空间缩写作用效果
MNT挂载文件系统隔离每个命名空间可以有自己的文件系统挂载点
NET网络网络资源隔离每个命名空间可以有自己的网络栈,包括网络接口、路由表等
PID进程进程号隔离每个命名空间有自己独立的 PID 编号空间
IPC间通进程间通信隔离每个命名空间有自己独立的 System V IPC 和 POSIX 消息队列
UTS主机主机名、域名隔离每个命名空间可以有自己的主机名和域名
USER用户用户名、组名隔离每个命名空间可以有自己的用户和组 ID 映射
4.1.6 Docker 架构以及组件
4.1.7 Docker 的核心技术

Docker 容器本质上是宿主机的一个进程,通过以下技术实现资源隔离和限制:

  • Namespace:实现资源隔离。
  • Cgroup:实现资源限制。
  • 写时复制技术(Copy-on-Write):实现高效的文件操作。
4.2 Docker 核心概念
  1. 镜像(Image)
    • 镜像是包含应用程序及其所有依赖环境的可执行包。它是一个只读模板,基于该模板可以创建容器实例。
  2. 容器(Container)
    • 容器是镜像的运行实例。容器提供了与外部环境隔离的运行时环境,可以在不同的系统上运行。
    • 容器通过 Docker 引擎启动,具有独立的文件系统、网络、进程空间。
  3. 仓库(Repository)
    • 仓库是存放 Docker 镜像的地方。Docker Hub 是最常用的公共仓库,用户也可以创建私有仓库。
4.3 Docker 安装与配置
  • Docker 目前仅支持 64 位系统。
  • 关闭防火墙和 SELinux
systemctl stop firewalld.service
setenforce 0
  • 安装依赖包
yum install -y yum-utils device-mapper-persistent-data lvm2
- yum-utils:提供了 `yum-config-manager` 工具。
- device-mapper:Linux 内核中支持逻辑卷管理的通用设备映射机制。
- device-mapper-persistent-data** 和 **lvm2**:device-mapper 存储驱动程序所需的依赖包。

在这里插入图片描述
在这里插入图片描述

  • 设置阿里云镜像源
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

在这里插入图片描述

  • 安装 Docker-CE 并设置为开机自动启动
yum install -y docker-ce docker-ce-cli containerd.io
systemctl start docker.service
systemctl enable docker.service
- Docker 系统包含两个程序:Docker 服务端和 Docker 客户端。
- Docker 服务端是一个服务进程,负责管理所有容器。
- Docker 客户端是 Docker 服务端的远程控制器,用于控制 Docker 服务端进程

在这里插入图片描述

  • 基本命令
    • docker --version:查看 Docker 版本。
    • docker info:查看 Docker 系统信息。
      在这里插入图片描述

二、Docker 容器管理

1. Docker 镜像操作

1.1 搜索镜像
docker search nginx
  • 作用:通过关键字(例如 nginx)在 Docker Hub 上搜索相关的镜像。搜索结果会显示镜像的名称、描述、星级评价等。
1.2 获取镜像
docker pull nginx
  • 作用:从 Docker Hub 拉取 nginx 镜像,默认下载最新(latest)版本。如果你不指定标签(tag),则会下载默认的 latest 标签的镜像。
1.3 镜像加速下载

镜像下载可能会因为网络原因而比较慢,尤其是国内用户。这里给出了几种加速镜像下载的方法。

1.3.1 阿里云加速器
mkdir -p /etc/docker
tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://ae3f5qei.mirror.aliyuncs.com"]
}
EOF
systemctl daemon-reload
systemctl restart docker
  • 作用:配置 Docker 使用阿里云镜像加速器来提高镜像下载速度。
1.3.2 华为加速器
mkdir -p /etc/docker
tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": [ "https://0a40cefd360026b40f39c00627fa6f20.mirror.swr.myhuaweicloud.com" ]
}
EOF
  • 作用:配置 Docker 使用华为云镜像加速器。
1.4 查看镜像信息
cat /var/lib/docker/image/overlay2/repositories.json
  • 作用:查看 Docker 本地镜像的详细信息。/var/lib/docker 是 Docker 存储所有数据的目录,镜像存储在 image 目录下的 overlay2 子目录中。
1.4.1 查看本地所有镜像
docker images
  • 作用:列出所有已经下载到本地的镜像,包括仓库名称、标签、镜像 ID、创建时间和大小等信息。
1.5 获取镜像详细信息
docker inspect 41f689c20910
REPOSITORY:镜像属于的仓库;
TAG:镜像的标签信息,标记同一个仓库中的不同镜像;
IMAGE ID:镜像的唯一ID 号,唯一标识一个镜像;
CREATED:镜像创建时间;
VIRTUAL SIZE:镜像大小;

在这里插入图片描述
在这里插入图片描述

  • 作用:获取指定镜像(通过镜像 ID)详细信息。此命令返回一个 JSON 格式的详细信息,包括镜像的层次、历史记录、配置、大小等。
1.6 为本地镜像添加标签
docker tag nginx:latest nginx:web
docker images | grep nginx

在这里插入图片描述

  • 作用:为本地的 nginx:latest 镜像添加新的标签 nginx:web,这并不会创建新的镜像,而是为同一个镜像附加了新的标签。
1.7 删除镜像
docker rmi nginx:web

在这里插入图片描述

  • 作用:删除指定标签的镜像。注意:如果镜像有多个标签,删除指定标签不会删除镜像本身,只有在没有其他标签和容器依赖的情况下才会彻底删除镜像。如果镜像正在被容器使用,需要先删除容器。
1.8 存储镜像(导出)
docker save -o nginx.tar nginx:latest
  • 作用:将本地镜像 nginx:latest 保存为 tar 包(nginx.tar)。这可以用于镜像备份或迁移。
    在这里插入图片描述
    在这里插入图片描述
1.9 载入镜像(导入)
docker load < nginx.tar

在这里插入图片描述

docker load -i nginx.tar
  • 作用:从本地 tar 文件中加载镜像。你可以将导出的镜像文件通过此命令重新加载到 Docker 中。
1.10 上传镜像到 Docker Hub
1.10.1 标签镜像
docker tag nginx:latest soscscs/nginx:web
  • 作用:为镜像添加一个新的标签,并指定上传到 Docker Hub 的目标仓库。soscscs/nginx:web 表示在 Docker Hub 上的 soscscs 账户下的 nginx 仓库,并使用 web 标签。
1.10.2 登录 Docker Hub
docker login
  • 作用:登录 Docker Hub,输入用户名、密码进行身份验证。登录后才可以上传镜像。
1.10.3 上传镜像
docker push soscscs/nginx:web
  • 作用:将本地的 nginx:web 镜像上传到 Docker Hub。上传后,你可以在 Docker Hub 上看到该镜像,并分享或部署它。

2. Docker 容器操作

容器创建:就是将镜像加载到容器的过程。
新创建的容器默认处于停止状态,不运行任何程序,需要在其中发起一个进程来启动容器。

2.1 创建容器
docker create -it nginx:latest /bin/bash

在这里插入图片描述

  • 作用:创建一个新容器,但不启动它。
2.2 启动容器
docker start 8b0a7be0ff58
docker ps -a

在这里插入图片描述

  • 作用:启动已创建的容器。
2.3 停止容器
docker stop <container_id>
  • 作用:停止正在运行的容器。
2.4 查看容器状态
docker ps -a

在这里插入图片描述

  • 作用:查看所有容器,包括已停止的容器。
2.5 创建并启动容器
docker run centos:7 /usr/bin/bash -c ls /
docker ps -a

在这里插入图片描述

  • 作用:可以直接执行 docker run 命令,等同于先执行 docker create 命令,再执行 docker start 命令。
2.6 在后台持续运行 docker run 创建的容器
docker run -d centos:7 /usr/bin/bash -c "while true;do echo hello;done"
docker run -itd --name test1 centos:7 /bin/bash   #创建容器并持续运行容器
docker ps -a

在这里插入图片描述
在这里插入图片描述

  • 作用:需要在 docker run 命令之后添加 -d 选项让 Docker 容器以守护形式在后台运行。并且容器所运行的程序不能结束。
2.7 容器交互
docker exec -it 2592d3fad0fb /bin/bash

在这里插入图片描述

  • 作用:需要进入容器进行命令操作时,可以使用 docker exec 命令进入运行着的容器。
2.8 复制到容器中
echo abc123 > ~/test.txt
docker cp ~/test.txt 2592d3fad0fb:/opt/

在这里插入图片描述

  • 作用:把宿主机的文件传入到容器内部。
2.9 容器的导出与导入
docker export 2592d3fad0fb > centos7.tar
cat centos7.tar | docker import - centos7:test

在这里插入图片描述
在这里插入图片描述

  • 作用:用户可以将任何一个 Docker 容器从一台机器迁移到另一台机器。在迁移过程中,可以使用 docker export 命令将已经创建好的容器导出为文件,无论这个容器是处于运行状态还是停止状态均可导出。可将导出文件传输到其他机器,通过相应的导入命令实现容器的迁移。
2.10 删除容器
docker rm 2592d3fad0fb

在这里插入图片描述

  • 作用:删除已经终止状态的容器。

三、Docker 网络管理

1. Docker 网络实现原理

Docker 使用 Linux 桥接,在宿主机虚拟一个 Docker 容器网桥 (docker0),Docker 启动一个容器时会根据 Docker 网桥的网段分配给容器一个 IP 地址,称为 Container-IP,同时 Docker 网桥是每个容器的默认网关。因为在同一宿主机内的容器都接入同一个网桥,这样容器之间就能够通过容器的 Container-IP 直接通信。

Docker 网桥是宿主机虚拟出来的,并不是真实存在的网络设备,外部网络是无法寻址到的,这也意味着外部网络无法直接通过 Container-IP 访问到容器。如果容器希望外部访问能够访问到,可以通过映射容器端口到宿主主机(端口映射),即 docker run 创建容器时候通过 -p-P 参数来启用,访问容器的时候就通过 [宿主机IP]:[容器端口] 访问容器。

2. Docker 的网络模式

2.1 host模式

相当于 Vmware 中的桥接模式,与宿主机在同一个网络中,但没有独立 IP 地址。Docker 使用了 Linux 的 Namespaces 技术来进行资源隔离,如 PID Namespace 隔离进程,Mount Namespace 隔离文件系统,Network Namespace 隔离网络等。一个 Network Namespace 提供了一份独立的网络环境,包括网卡、路由、iptable 规则等都与其他的 Network Namespace 隔离。一个 Docker 容器一般会分配一个独立的 Network Namespace。但如果启动容器的时候使用 host 模式,那么这个容器将不会获得一个独立的 Network Namespace,而是和宿主机共用一个 Network Namespace。容器将不会虚拟出自己的网卡、配置自己的 IP 等,而是使用宿主机的 IP 和端口。

2.2 Container模式

在理解了 host 模式后,这个模式也就好理解了。这个模式指定新创建的容器和已经存在的一个容器共享一个 Network Namespace,而不是和宿主机共享。新创建的容器不会创建自己的网卡,配置自己的 IP,而是和一个指定的容器共享 IP、端口范围等。同样,两个容器除了网络方面,其他的如文件系统、进程列表等还是隔离的。两个容器的进程可以通过 lo 网卡设备通信。

2.3 无网络模式(none)

使用 none 模式,Docker 容器拥有自己的 Network Namespace,但是,并不为 Docker 容器进行任何网络配置。也就是说,这个 Docker 容器没有网卡、IP、路由等信息。这种网络模式下容器只有 lo 回环网络,没有其他网卡。这种类型的网络没有办法联网,封闭的网络能很好的保证容器的安全性。

2.4 桥接模式(bridge)

bridge 模式是 docker 的默认网络模式,不用 --net 参数,就是 bridge 模式。相当于 Vmware 中的 nat 模式,容器使用独立 network Namespace,并连接到 docker0 虚拟网卡。通过 docker0 网桥以及 iptables nat 表配置与宿主机通信,此模式会为每一个容器分配 Network Namespace、设置 IP 等,并将一个主机上的 Docker 容器连接到一个虚拟网桥上。

2.5 自定义模式

自定义网络模式,docker 提供了三种自定义网络驱动:bridge、overlay、macvlan。bridge 驱动类似默认的 bridge 网络模式,但增加了一些新的功能,overlay 和 macvlan 是用于创建跨主机网络。建议使用自定义的网络来控制哪些容器可以相互通信,还可以自动 DNS 解析容器名称到 IP 地址。Docker 提供了创建这些网络的默认网络驱动程序,你可以创建一个新的 Bridge 网络,Overlay 或 Macvlan 网络。

docker network create --subnet=172.18.0.0/16 --opt "com.docker.network.bridge.name"="docker1" mynetwork
docker run -itd --name test4 --net mynetwork --ip 172.18.0.10 centos:7 /bin/bash

3. 总结

  1. 桥接模式(bridge)
    • 默认的网络模式,容器通过虚拟网桥与宿主机和其他容器通信。
  2. 主机模式(host)
    • 容器共享宿主机的网络栈,直接使用宿主机的 IP 地址。
  3. 容器模式(container)
    • 容器共享另一个容器的网络栈,两个容器可以使用相同的 IP 地址进行通信。
  4. 无网络模式(none)
    • 容器没有网络配置,只有回环接口(lo)。
  5. 自定义网络:定义网络允许用户自定义容器的网络范围、子网和路由,从而提供更高的网络控制和隔离性。

额外附加:

  1. Overlay:这是 Docker Swarm 模式的网络,主要用于在多个主机上创建一个分布式网络。容器间即便在不同的主机也能完成通信,相当于在跨主机的容器之间创建了一个覆盖网络。
  2. Macvlan:Macvlan 模式可以让容器直接连接到主机的物理网络,每个 Macvlan 接口都有一个唯一的 MAC 地址,此模式使得容器看起来就像是网络上的物理设备。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/935394.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MiniExcel开源资料

MiniExcel开源资料MiniExcel开发文档

2025加药装置厂家权威推荐榜:精准计量与稳定运行优选指南

2025加药装置厂家权威推荐榜:精准计量与稳定运行优选指南在工业水处理、石油化工、电力能源等关键领域,加药装置作为流程工业中不可或缺的配套设备,其计量精度与运行稳定性直接影响生产效率和环保达标。随着2025年环…

Linux文本搜索工具grep命令使用

grep 是一个强大的文本搜索工具,广泛用于Unix和类Unix系统中,用于搜索包含指定模式的文本行。它由Ken Thompson编写,作为UNIX操作系统的一部分。其名称来源于ed命令 g/re/p(全局正则表达式打印)。以下是对 grep 命…

一款基于 .NET 开源免费、高效且用户友好文件搜索工具!

前言 无论是工作中的项目文档,还是学习中的研究资料,高效地管理和搜索这些文件成为了我们提升工作效率的关键。今天大姚给大家分享一款基于 .NET 开源免费(MIT license)、高效且用户友好的文件搜索工具,旨在帮助您…

2025上海保洁公司最新权威推荐榜:专业服务与用户口碑深度解

2025上海保洁公司最新权威推荐榜:专业服务与用户口碑深度解析在现代化都市运营体系中,专业保洁服务已成为企业高效运转和品质形象维护的重要保障。上海作为国际化大都市,保洁服务市场需求持续增长,服务品质参差不齐…

心得体会

不要美化你未走过的路

DedeCMS命令执行复现研究 | CVE-2025-6335 - 指南

DedeCMS命令执行复现&研究 | CVE-2025-6335 - 指南pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas&q…

2025视频拍摄厂家最新权威推荐榜:专业设备与创意方案首选

2025视频拍摄厂家最新权威推荐榜:专业设备与创意方案首选在数字化浪潮席卷各行各业的今天,视频内容已成为企业宣传、产品推广、品牌塑造的重要载体。随着5G技术的普及和人工智能的发展,视频拍摄行业正迎来前所未有的…

算法训练.16 - 实践

算法训练.16 - 实践pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "C…

Java连接MySQL数据库

环境准备安装Java开发工具包 (JDK) : 确保你的系统已安装JDK,并配置了环境变量,以便能够在命令行中运行 java和 javac命令。 安装MySQL数据库: 在你的系统上安装MySQL服务器,并确保它正在运行。创建一个数据库以及一…

Git版本控制工具合并分支merge命令操作流程

在Git中合并分支是一个常见的操作,它允许你将一个分支的更改合并到另一个分支中。以下是使用 merge命令进行分支合并的详细步骤和最佳实践。 准备工作 在开始之前,确保你已经安装了Git,并且有一个本地仓库。此外,确…

第七章 手写数字识别(终)

将前文的代码解耦为三个部分:定义的类和函数的nn_core.py 模型训练和测试集验证并保存最优模型的main_train.py 验收 (自定义图片预测)的脚本predict.py至此,手写数字识别的NLP任务完全结束,至于更多的优化目前我不…

2025年AI内容安全产品选型指南:为何需要专业的AI安全围栏(AI-FOCUS团队鉴冰AI FENCE)?

2025年AI内容安全产品选型指南:为何需要专业的AI安全围栏(AI-FOCUS团队鉴冰AI FENCE)?随着企业大规模应用AI对话服务(如智能客服、知识库问答、营销机器人等),内容安全风险日益凸显。传统Web应用防火墙(WAF)主…

2025南通摄影公司最新权威推荐榜:专业团队与创意服务口碑之

2025南通摄影公司最新权威推荐榜:专业团队与创意服务口碑之选在数字媒体蓬勃发展的今天,专业摄影服务已成为企业品牌建设、产品推广不可或缺的重要环节。南通作为长三角地区的重要城市,摄影服务行业呈现出专业化、细…

在Kubernetes环境中引用变量的方法

在Kubernetes环境中,变量的引用主要通过环境变量和ConfigMaps来实现。这两种方式都可以让你在Pod的定义中引用变量,从而使你的应用更加灵活和可配置。 首先,我们来看看如何使用环境变量。Kubernetes允许你在Pod定义…

2025恒温恒湿车间厂家权威推荐:精密环境控制解决方案TOP

2025恒温恒湿车间厂家权威推荐:精密环境控制解决方案TOP在高端制造业快速发展的今天,精密加工车间对环境控制的要求日益严苛。恒温恒湿环境不仅能保障精密仪器设备的稳定运行,还能确保产品质量的一致性,减少因温湿…

2025预应力千斤顶厂家权威推荐榜:定制技术与耐用品质深度解

2025预应力千斤顶厂家权威推荐榜:定制技术与耐用品质深度解预应力千斤顶作为现代工程建设中不可或缺的核心设备,其技术性能与耐久品质直接关系到工程安全与施工效率。随着2025年建筑行业技术标准的不断提升,预应力张…

实用指南:用Spark+Django打造食物营养数据可视化分析系统

实用指南:用Spark+Django打造食物营养数据可视化分析系统pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consola…

2025液压阀块厂家权威推荐榜:精密加工与直销优势深度解析

2025液压阀块厂家权威推荐榜:精密加工与直销优势深度解析在工业自动化快速发展的今天,液压阀块作为液压系统的核心控制单元,其加工质量直接影响整个系统的运行效率与稳定性。随着制造业转型升级,市场对液压阀块的加…

NOI/1.7编程基础之字符串/18:验证子串

一.提议总结 本题考点:本题考点在于在一个里寻找另一个的过程 二.解题思路 1.先比较字符串的大小,大的里含有小的,小的里必然没有大的 2.排查大字符串中有没有小的里面的第一个 3.再分别往后对比,如果小字符串和大…