news 2026/2/4 5:08:08

Docker 入门指南:从 “容器小白” 到快速上手

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Docker 入门指南:从 “容器小白” 到快速上手

1. Docker发展与简介

1.1 云服务与虚拟化基础

1.1.1云服务模型介绍

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

  1. IaaS(基础设施即服务)

    • 提供虚拟化计算资源(如虚拟机、存储、网络等)。

    • 用户可以灵活配置自己的计算环境,负责安装操作系统、管理资源等。

    • 优点:灵活度高、可扩展性强。

    • 缺点:管理复杂,需要较多技术支持。

  2. PaaS(平台即服务)

    • 提供一个开发平台,用户可以在上面开发应用程序,而无需关注底层硬件或操作系统。

    • 优点:简化开发过程,适合开发者。

    • 缺点:灵活度较低,可能受到平台限制。

  3. SaaS(软件即服务)

    • 提供已经构建好的应用程序,用户可以直接使用,无需安装和维护。

    • 优点:快速部署,省时省力。

    • 缺点:定制化差,依赖于服务提供商。

  4. DaaS(数据即服务)

    • 提供数据处理和分析服务,用户可以访问、分析云端存储的大数据。

    • 优点:降低用户管理数据的难度。

    • 缺点:可能涉及数据隐私问题。

1.1.2常见云服务提供商
  • 阿里云腾讯云AWSGoogle Cloud华为云等是市场上主要的云服务提供商。

  • 云服务提供商通常提供各种服务,如存储、计算、网络、CDN 等。

1.2 虚拟化技术概述

1.2.1虚拟化基础
  1. 虚拟化类型

    • 全虚拟化:虚拟化软件完全模拟硬件环境,允许多个操作系统共享硬件资源,彼此之间相互独立。

      • 适用场景:需要兼容多个操作系统(如 Linux 与 Windows 同时运行)的环境。

    • 半虚拟化:虚拟机与宿主操作系统协作,通过修改操作系统内核来提高性能。 急需架构

      • 适用场景:高性能需求的环境,尤其是优化了开源操作系统(如 Linux)的虚拟化。

  2. 虚拟化产品

    • VMware:广泛使用的企业级虚拟化平台,支持全虚拟化和半虚 拟化。 企业版 mac fusion

      EXSI企业版 vsphere work

  • Hyper-V:由微软推出的虚拟化平台,集成于 Windows Server 中。

  • VirtualBox:适用于个人和开发者的虚拟化产品,跨平台支持(Linux、macOS、Windows)。

1.3 Docker简介及其重要性

1.3.1. 为什么使用 Docker

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

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

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

1.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 提供了更多对开源和社区驱动的工具的支持,力求保持其在容器生态中的主导地位。

1.3.3 Docker 版本:CE vs EE

Docker 提供了两个主要版本:

  • Docker Community Edition (CE):适用于个人开发者或小型团队,提供基本的容器功能,免费使用。

  • Docker Enterprise Edition (EE):适用于大规模生产环境,强调企业级的安全性和支持,通常是付费版本。

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

1.3.4 Docker 与传统虚拟化的区别

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

  • 传统虚拟机:每个虚拟机都包含完整的操作系统,资源占用大。

  • Docker 容器:共享宿主操作系统的内核,启动快,占用少,易于管理。

特性Docker 容器虚拟机
启动速度秒级分钟级
计算能力损耗几乎无损耗 50%左右
性能接近原生弱于
系统支持量(单机)上千个几十个
隔离性资源隔离/限制完全隔离
1.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 容器和镜像。

1.3.6 Docker 容器的优势
  • 移植性:应用和其依赖打包在容器中,跨平台和跨环境运行无缝。

  • 隔离性:容器内的应用互相隔离,不会影响宿主机或其他容器。

  • 效率高:由于不需要完整的操作系统,容器消耗的资源少,启动速度快。

  • 简化部署:通过 Docker,可以轻松创建、复制、修改和删除容器,简化了应用部署和管理的复杂度。

1.3.7 容器技术的应用场景
  • CI/CD(持续集成与持续交付):利用 Docker 快速构建和部署应用,保证开发、测试、生产环境的一致性。

  • 微服务架构:容器技术与微服务架构相得益彰,可以独立部署和扩展每个微服务。

  • 多云与混合云环境:容器跨平台能力使得应用能在不同云环境和本地环境间无缝迁移。

1.4 Docker 基础概念

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

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

鲸鱼背上有集装箱 蓝色的大海里面--------宿主机系统window10/linux 鲸鱼 ---------- docker 集装箱 ---------容器实例 from 来自我们的镜像模板

Docker是一个开源的容器化平台,能够让开发者将应用及其依赖环境打包成容器,从而简化跨平台的部署和管理。

Linux 六大命名空间
命名空间缩写作用效果
MNT挂载文件系统隔离每个命名空间可以有自己的文件系统挂载点
NET网络网络资源隔离每个命名空间可以有自己的网络栈,包括网络接口、路由表等
PID进程进程号隔离每个命名空间有自己独立的 PID 编号空间
IPC间通进程间通信隔离每个命名空间有自己独立的 System V IPC 和 POSIX 消息队列
UTS主机主机名、域名隔离每个命名空间可以有自己的主机名和域名
USER用户用户名、组名隔离每个命名空间可以有自己的用户和组 ID 映射
Docker架构以及组件
  • Docker daemon(Docker守护进程) Docker daemon是一个运行在宿主机(DOCKER_HOST)的后台进程。可通过Docker客户端与之通信。

  • Client(Docker客户端) Docker客户端是Docker的用户界面,它可以接受用户命令和配置标识,并与Docker daemon通信。图中,docker build等都是Docker的相关命令。

  • Images(Docker镜像) Docker镜像是一个只读模版,它包含创建Docker容器的说明。它和系统安装光盘有点像—使用系统安装光盘可以安装系统,同理,使用Docker镜像可以运行Docker镜像中的程序。

  • Container(容器) 容器是镜像的可运行实例。镜像和容器的关系有点类似于面向对象中,类和对象的关系。可通过Docker API或者CLI命令来启停,移动,删除容器。

  • Registry Docker Registry是一个集中存储与分发镜像的服务。构建完Docker镜像后,就可在当前宿主机上运行。但如果想要在其他机器上运行这个镜像,就需要手动复制。此时可借助Docker Registry来避免镜像的手动复制。一个Docker Registry可包含多个Docker仓库,每个仓库可包含多个镜像标签,每个标签对应一个Docker镜像。这跟Maven的仓库有点类似,如果把Docker Registry比作Maven仓库的话,那么Docker仓库就可理解为某jar包的路径,而镜像标签则可理解为jar包的版本号。

④ Docker 组成
⑤ Docker 的核心技术

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

  • Namespace:实现资源隔离。

  • Cgroup:实现资源限制。

  • 写时复制技术(Copy-on-Write):实现高效的文件操作。

1.4.2Docker 核心概念重点

  1. 镜像(Image)

    • 镜像是包含应用程序及其所有依赖环境的可执行包。它是一个只读模板,基于该模板可以创建容器实例。

  2. 容器(Container)

    • 容器是镜像的运行实例。容器提供了与外部环境隔离的运行时环境,可以在不同的系统上运行。

    • 容器通过 Docker 引擎启动,具有独立的文件系统、网络、进程空间。

  3. 仓库(Repository)

    • 仓库是存放 Docker 镜像的地方。Docker Hub 是最常用的公共仓库,用户也可以创建私有仓库

1.4.6 Docker安装与配置(CentOS 7示例)

镜像是Docker的基础,所有容器都基于镜像创建,以下是常用的镜像操作命令。

  • Docker 目前仅支持 64 位系统。

  • 关闭防火墙和 SELinux

systemctl stop firewalld.service setenforce 0
1安装依赖包
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 存储驱动程序所需的依赖包。
2.设置阿里云镜像源
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
3安装 Docker-CE 并设置为开机自动启动
yum install -y docker-ce docker-ce-cli containerd.io 注意:如果是指定版本docker-ce-20.10.18 systemctl start docker.service systemctl enable docker.service #开机自启 - Docker 系统包含两个程序:Docker 服务端和 Docker 客户端。 - Docker 服务端是一个服务进程,负责管理所有容器。 - Docker 客户端是 Docker 服务端的远程控制器,用于控制 Docker 服务端进程。

基本命令

  • docker --version:查看 Docker 版本。

  • docker info:查看 Docker 系统信息。

2. Docker 容器管理

镜像是Docker的基础,所有容器都基于镜像创建,以下是常用的镜像操作命令。

2.1.1 搜索镜像

从Docker Hub搜索镜像,示例:

1 # 搜索nginx镜像 2 docker search nginx

2.1.2 拉取镜像

从仓库下载镜像到本地,示例:

docker pull nginx

作用:从 Docker Hub 拉取nginx镜像,默认下载最新(latest)版本。如果你不指定标签(tag),则会下载默认的latest标签的镜像。

2.1.3 镜像加速下载
华为加速器
# tee /etc/docker/daemon.json <<-'EOF' > { > "registry-mirrors": ["https://05f073ad3c0010ea0f4bc00b7105ec20.mirror.swr.myhuaweicloud.com"] > } > EOF { "registry-mirrors": ["https://05f073ad3c0010ea0f4bc00b7105ec20.mirror.swr.myhuaweicloud.com"] }
2.1.4 查看镜像信息
cat /var/lib/docker/image/overlay2/repositories.json

查看本地所有镜像

2.1.5 获取镜像详细信息
docker inspect 镜像ID

作用:获取指定镜像(通过镜像 ID)详

细信息。此命令返回一个 JSON 格式的详细信息,包括镜像的层次、历史记录、配置、大小等。

2.1.6 为本地镜像添加标签为了后期做迭代
#格式:docker tag 名称:[标签] 新名称:[新标签] docker tag nginx:latest nginx:web docker images | grep nginx

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

2.1.7 删除镜像
格式: docker rmi 仓库名称:标签 #当一个镜像有多个标签时,只是删除其中指定的标签 或者 docker rmi 镜像ID号 #会彻底删除该镜像 注意:如果该镜像已经被容器使用,正确的做法是先删除依赖该镜像的所有容器,再去删除镜像。 docker rmi nginx:web 强制删除 rmi-f

作用:删除指定标签的镜像。注意:如果镜像有多个标签,删除指定标签不会删除镜像本身,只有在没有其他标签和容器依赖的情况下才会彻底

docker load < nginx.tar

除镜像。如果镜像正在被容器使用,需要先删除容器

2.1.8 存储镜像(导出)
docker save -o nginx.tar nginx:latest

作用:将本地镜像nginx:latest保存为 tar 包(nginx.tar)。这可以用于镜像备份或迁移。

2.1.9 载入镜像(导入)
docker load < nginx.tar

作用:从本地 tar 文件中加载镜像。你可以将导出的镜像文件通过此命令重新加载到 Docker 中。

2.1.10 上传镜像到 Docker Hub 这里上传到阿里云

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/2/3 22:37:52

软件解耦与扩展:插件式开发方式(基于 C++ 与 C# 的实现)

软件解耦与扩展&#xff1a;插件式开发方式&#x1f914; 什么是插件式开发&#xff1f;&#x1f9e9; 为何选择插件式开发&#xff1f;—— 解耦与扩展的艺术1. 高度解耦2. 极致的扩展性3. 增强可维护性4. 支持动态加载与卸载&#x1f3d7;️ 插件系统的核心架构&#x1f4bb;…

作者头像 李华
网站建设 2026/2/3 12:31:31

免费降AI率的工具红黑榜:认准这2个免费降AI率工具,亲测有效!

2个实测免费的降AIGC率工具&#xff0c;顺利通过ai率查重&#xff01; AI 检测本身就没有公开算法&#xff0c;降 AI 工具更像黑箱。如果降AI率连一次免费试用都不给&#xff0c;那风险太大了。万一AI率没有降下来&#xff0c;又不能退&#xff0c;少则几元多则几十。 对于学…

作者头像 李华
网站建设 2026/1/30 9:26:20

霍华德·马克斯的市场周期定位技巧

霍华德马克斯的市场周期定位技巧 关键词:市场周期、投资心理学、逆向投资、价值投资、风险控制、资产配置、经济周期 摘要:本文深入探讨了著名投资大师霍华德马克斯(Howard Marks)的市场周期定位技巧。文章从市场周期的基本概念出发,详细分析了马克斯的投资哲学和方法论,包…

作者头像 李华
网站建设 2026/1/23 19:38:30

1500字免费降AIGC率的额度,2026年毕业论文查重必备!

3个实测免费的降AIGC率工具&#xff0c;顺利通过ai率查重&#xff01; AI 检测本身就没有公开算法&#xff0c;降 AI 工具更像黑箱。如果降AI率连一次免费试用都不给&#xff0c;那风险太大了。万一AI率没有降下来&#xff0c;又不能退&#xff0c;少则几元多则几十。 对于学…

作者头像 李华