1. Docker****发展与简介
1.1****云服务与虚拟化基础
1.1.1****云服务模型介绍
云计算是通过网络为用户提供可伸缩的计算资源。云服务通常分为以下几种类型:
① IaaS**(基础设施即服务)**
提供虚拟化计算资源(如虚拟机、存储、网络等)。
用户可以灵活配置自己的计算环境,负责安装操作系统、管理资源等。
优点:灵活度高、可扩展性强。
缺点:管理复杂,需要较多技术支持。
② PaaS**(平台即服务)**
提供一个开发平台,用户可以在上面开发应用程序,而无需关注底层硬件或操作系统。
优点:简化开发过程,适合开发者。
缺点:灵活度较低,可能受到平台限制。
③ SaaS**(软件即服务)**
提供已经构建好的应用程序,用户可以直接使用,无需安装和维护。
优点:快速部署,省时省力。
缺点:定制化差,依赖于服务提供商。
④ DaaS**(数据即服务)**
提供数据处理和分析服务,用户可以访问、分析云端存储的大数据。
优点:降低用户管理数据的难度。
缺点:可能涉及数据隐私问题。
1.1.2****常见云服务提供商
阿里云、腾讯云、AWS、Google Cloud、华为云等是市场上主要的云服务提供商。
云服务提供商通常提供各种服务,如存储、计算、网络、CDN 等。
1.2****虚拟化技术基础概述
① 虚拟化类型
全虚拟化:虚拟化软件完全模拟硬件环境,允许多个操作系统共享硬件资源,彼此之间相互独立。
适用场景:需要兼容多个操作系统(如 Linux 与 Windows 同时运行)的环境。
半虚拟化:虚拟机与宿主操作系统协作,通过修改操作系统内核来提高性能。
适用场景:高性能需求的环境,尤其是优化了开源操作系统(如 Linux)的虚拟化。
② 虚拟化产品
VMware:广泛使用的企业级虚拟化平台,支持全虚拟化和半虚 拟化。 企业版 mac fusion
EXSI企业版 vsphere work
① 简单理解 :https://baike.baidu.com/item/VMware%20vSphere/1716985?fromModule=lemma_inlin
② ESXi教程安装 (https://blog.csdn.net/G_D0120/article/details/138537920)
- KVM:Linux 内核中的虚拟化解决方案,支持硬件虚拟化。
学习 连接:https://blog.csdn.net/yb890102/article/details/127819690
........
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 Swarm和 Kubernetes的集成进行区分,Kubernetes 成为 Docker 引擎推荐的容器编排工具。
Docker 开始更加聚焦于开发者工具,而逐渐减少对企业级 Kubernetes 的直接支持,特别是在容器编排方面。
· 2021年:Docker 进一步优化了其本地开发工具,使得开发者能够更容易在本地环境中使用容器和Kubernetes 进行集成。
Docker Hub和 Docker Desktop的改进,使得 Docker 的云端镜像存储和本地开发环境更加流畅。
· 2022年:Docker 继续加大对 开发者体验的关注,推出了对 GitHub等工具的深度集成,帮助开发者快速构建和部署容器。
在企业领域,Docker 企业版继续被 Kubernetes 和其他工具组合使用,尤其是对于 CI/CD和 DevOps环境中的大规模部署。
· 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****基础概念
1.4.1 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客户端与之通信。
· (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.2 Docker****核心概念 重点
① 镜像(Image)
镜像是包含应用程序及其所有依赖环境的可执行包。它是一个只读模板,基于该模板可以创建容器实例。
② 容器(Container)
容器是镜像的运行实例。容器提供了与外部环境隔离的运行时环境,可以在不同的系统上运
行。
容器通过 Docker 引擎启动,具有独立的文件系统、网络、进程空间。
③ 仓库(Repository)
仓库是存放 Docker 镜像的地方。Docker Hub 是最常用的公共仓库,用户也可以创建私有仓 库。
1.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/dockerce/linux/centos/docker-ce.repo
安装 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 系统信息
[root@localhost ~]# docker info
Client: Docker Engine - Community
Version: 26.1.4
Context: default
Debug Mode: false
Plugins:
buildx: Docker Buildx (Docker Inc.)
Version: v0.14.1
Path: /usr/libexec/docker/cli-plugins/docker-buildx
compose: Docker Compose (Docker Inc.)
Version: v2.27.1
Path: /usr/libexec/docker/cli-plugins/docker-compose
Server:
Containers: 0 # 容器数量
Running: 0
Paused: 0
Stopped: 0
Images: 0 #镜像数量
Server Version: 20.10.18 # server 版本
Storage Driver: overlay2 # docker 使用的是 overlay2 文件驱动
Backing Filesystem: xfs # 宿主机上的底层文件系统
Supports d_type: true
Native Overlay Diff: true
userxattr: false
Logging Driver: json-file
Cgroup Driver: cgroupfs # Cgroups 驱动
Cgroup Version: 1
Plugins:
Volume: local
Network: bridge host ipvlan macvlan null overlay
Log: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog
Swarm: inactive
Runtimes: runc io.containerd.runc.v2 io.containerd.runtime.v1.linux
Default Runtime: runc
Init Binary: docker-init
containerd version: d2d58213f83a351ca8f528a95fbd145f5654e957
runc version: v1.1.12-0-g51d5e94
init version: de40ad0
Security Options:
seccomp
Profile: default
Kernel Version: 3.10.0-1160.71.1.el7.x86_64 # 宿主机的相关信息
Operating System: CentOS Linux 7 (Core)
OSType: linux
Architecture: x86_64
CPUs: 2
Total Memory: 3.682GiB
Name: localhost.localdomain
ID: PNPC:QPDU:E75Q:6636:M3MM:5G7G:QJOS:WBJN:A22V:FICS:WCHB:YVLM
Docker Root Dir: /var/lib/docker # docker 数据存储目录
Debug Mode: false
Experimental: false
Insecure Registries:
127.0.0.0/8
Registry Mirrors: # 加速站点
https://0a40cefd360026b40f39c00627fa6f20.mirror.swr.myhuaweicloud.com/
Live Restore Enabled: false
Docker 系统信息 扩展
### Docker 系统信息
- **Client 部分**:
- **Context**:当前使用的 Docker 上下文(默认为 "default")。
- **Debug Mode**:客户端调试模式是否开启(此处为 false)。
- **Plugins**:列出已安装的 Docker 插件,如 Docker App 和 Buildx。
- **Server 部分**(关键信息):
- **Containers**:
- **Containers**: 0(总容器数,包括运行、暂停和停止的容器)。
- **Running**: 0(正在运行的容器数)。
- **Paused**: 0(暂停的容器数)。
- **Stopped**: 0(停止的容器数)。
- **Images**: 1(本地镜像数)。
- **Server Version**: 20.10.3(Docker 服务器版本)。
- **Storage Driver**: overlay2(Docker 使用的存储驱动)。
- **Backing Filesystem**: xfs(宿主机上的底层文件系统)。
- **Supports d_type**: true(表示文件系统支持 d_type,有助于性能优化)。
- **Native Overlay Diff**: true(表示使用原生的 overlay diff 技术,提高性能)。
- **Logging Driver**: json-file(日志驱动)。
- **Cgroup Driver**: cgroupfs(Cgroups 驱动,用于资源限制和管理)。
- **Plugins**:列出 Docker 支持的卷、网络和日志插件。
- **Swarm**: inactive(Swarm 集群模式未启用)。
- **Runtimes**:列出 Docker 支持的运行时,如 runc。
- **Default Runtime**: runc(默认运行时)。
- **Security Options**:列出安全选项,如 seccomp(安全计算模式)。
- **Kernel Version** 和 **Operating System**:提供宿主机的内核版本和操作系统信息。
- **Architecture**:宿主机的架构(如 x86_64)。
- **CPUs** 和 **Total Memory**:宿主机的 CPU 数和总内存。
- **Name** 和 **ID**:Docker 主机的名称和唯一 ID。
- **Docker Root Dir**:Docker 数据存储的根目录(如 /var/lib/docker)。
- **Debug Mode**:服务器调试模式是否开启(此处为 false)。
- **Registry**:默认的 Docker 镜像仓库地址。
- **Labels**:Docker 主机的标签。
- **Experimental**:是否启用实验性功能(此处为 false)。
- **Insecure Registries**:列出不安全的镜像仓库地址(如 127.0.0.0/8)。
- **Registry Mirrors**:列出镜像加速站点,用于加速 Docker 镜像的拉取和推送。
- **Live Restore Enabled**:是否启用实时恢复功能(此处为 false)。
- **存储驱动(Storage Driver)**:Docker 使用 overlay2 作为其默认的存储驱动,它提供了高效的镜像和容器管理。
- **Cgroup 驱动(Cgroup Driver)**:cgroupfs 是 Linux 上用于限制、记录和隔离进程组所使用的物理资源(如 CPU、内存、磁盘 I/O 等)的机制。
- **运行时(Runtimes)**:Docker 支持多种容器运行时,其中 runc 是默认的运行时,用于启动和管理容器。
- **安全选项(Security Options)**:seccomp 是一种内核功能,用于在 Linux 上提供沙箱环境,限制容器内进程能够执行的系统调用。
- **镜像加速站点(Registry Mirrors)**:通过配置镜像加速站点,可以加速 Docker 镜像的下载速度,提高开发效率。
2. Docker****容器管理
2.1 Docker****镜像操作
2.1.1****搜索镜像
docker search nginx
作用:通过关键字(例如 nginx )在 Docker Hub 上搜索相关的镜像。搜索结果会显示镜像的名 称、描述、星级评价等。
2.1.2****获取镜像
docker pull nginx
作用:从 Docker Hub 拉取 nginx 镜像,默认下载最新(latest)版本。如果你不指定标签( tag ),则会下载默认的 latest 标签的镜像。
2.1.3****镜像加速下载
镜像下载可能会因为网络原因而比较慢,尤其是国内用户。这里给出了几种加速镜像下载的方法。
国内加速器:
mkdir -p /etc/docker
tee /etc/docker/daemon.json <<-'EOF' # 国内镜像加速器
https://docker.registry.cyou/
https://docker-cf.registry.cyou/
https://dockercf.jsdelivr.fyi/
https://docker.jsdelivr.fyi/
https://dockertest.jsdelivr.fyi/
https://mirror.aliyuncs.com/
https://dockerproxy.com/
https://mirror.baidubce.com/
https://docker.m.daocloud.io/
https://docker.nju.edu.cn/
https://docker.mirrors.sjtug.sjtu.edu.cn/
https://docker.mirrors.ustc.edu.cn/
https://mirror.iscas.ac.cn/
https://docker.rainbond.cc/
EOF
systemctl daemon-reload
systemctl restart docker
作用:配置 Docker 使用阿里云镜像加速器来提高镜像下载速度。
华为加速器:
mkdir -p /etc/docker
tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": [
"https://0a40cefd360026b40f39c00627fa6f20.mirror.swr.myhuaweicloud.com" ]
}
EOF
作用:配置 Docker 使用华为云镜像加速器。
2.1.4****查看镜像信息
cat /var/lib/docker/image/overlay2/repositories.json
作用:查看 Docker 本地镜像的详细信息。 /var/lib/docker 是 Docker 存储所有数据的目录, 镜像存储在 image 目录下的 overlay2 子目录中。
查看本地所有镜像:
[root@localhost ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest 576306625d79 10 days ago 152MB
-----------------------------------------------------------------------------------------
REPOSITORY:镜像属于的仓库;
TAG:镜像的标签信息,标记同一个仓库中的不同镜像;
IMAGE ID:镜像的唯一ID 号,唯一标识一个镜像;
CREATED:镜像创建时间;
VIRTUAL SIZE:镜像大小;
-----------------------------------------------------------------------------------------
作用:列出所有已经下载到本地的镜像,包括仓库名称、标签、镜像 ID、创建时间和大小等信息。
2.1.5****获取镜像详细信息
docker inspect 576306625d79
作用:获取指定镜像(通过镜像 ID)详细信息。此命令返回一个 JSON 格式的详细信息,包括镜像的层次、历史记录、配置、大小等。
2.1.6****为本地镜像添加标签
#格式:docker tag 名称:[标签] 新名称:[新标签]
docker tag nginx:latest nginx:web
[root@localhost ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest 576306625d79 10 days ago 152MB
[root@localhost ~]# docker tag nginx:latest nginx:web
[root@localhost ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest 576306625d79 10 days ago 152MB
nginx web 576306625d79 10 days ago 152MB
[root@localhost ~]# docker images | grep nginx
nginx latest 576306625d79 10 days ago 152MB
nginx web 576306625d79 10 days ago 152MB
作用:为本地的 nginx:latest 镜像添加新的标签 nginx:web ,这并不会创建新的镜像,而是为 同一个镜像附加了新的标签。
2.1.7****删除镜像
格式:
docker rmi 仓库名称:标签 #当一个镜像有多个标签时,只是删除其中指定的标签
或者
docker rmi 镜像ID号 #会彻底删除该镜像
注意:如果该镜像已经被容器使用,正确的做法是先删除依赖该镜像的所有容器,再去删除镜像。
docker rmi nginx:web
作用:删除指定标签的镜像。注意:如果镜像有多个标签,删除指定标签不会删除镜像本身,只有在没有其他标签和容器依赖的情况下才会彻底删除镜像。如果镜像正在被容器使用,需要先删除容器。
2.1.8****存储镜像(导出)
docker save -o nginx.tar nginx:latest
作用:将本地镜像 nginx:latest 保存为 tar 包( nginx.tar )。这可以用于镜像备份或迁移。
2.1.9****载入镜像(导入)
docker load < nginx.tar
或者
docker load -i nginx.tar
# 二选一
作用:从本地 tar 文件中加载镜像。你可以将导出的镜像文件通过此命令重新加载到 Docker 中。
2.1.10上传镜像到Docker Hub 代码仓库
hub.docker.com # 可能不会用,我用的时华为镜像仓库
标签镜像:
docker tag nginx:latest soscscs/nginx:web
作用:为镜像添加一个新的标签,并指定上传到 Docker Hub 的目标仓库。 soscscs/nginx:web
表示在 Docker Hub 上的 soscscs 账户下的 nginx 仓库,并使用 web 标签。
登录Docker Hub:
# 标签镜像
sudo docker tag {镜像名称}:{版本名称} swr.cn-east-3.myhuaweicloud.com/{组织名称}/{镜像名称}:{版本名称}
# 上传镜像
sudo docker push swr.cn-east-3.myhuaweicloud.com/{组织名称}/{镜像名称}:{版本名称}
[root@localhost ~]# sudo docker tag nginx:latest swr.cn-east-3.myhuaweicloud.com/zhumeng/nginx:latest
[root@localhost ~]# sudo docker push swr.cn-east-3.myhuaweicloud.com/zhumeng/nginx:latest
The push refers to repository [swr.cn-east-3.myhuaweicloud.com/zhumeng/nginx]
8921786c2de3: Pushed
08ba9962589f: Pushed
6e32bc56a725: Pushed
6898c33749d5: Pushed
69f56ce8c461: Pushed
20cf308e6957: Pushed
77a2b55fbe8b: Pushed
latest: digest: sha256:460a7081b2a0e17940688563b294c03f326cd96dc43d768691f58abb50f7746f size: 1778
作用:登录 华为云,输入用户名、密码进行身份验证。登录后才可以上传镜像。
上传镜像:
docker push soscscs/nginx:web
作用:将本地的 nginx:web 镜像上传到 Docker Hub。上传后,你可以在 Docker Hub 上看到该镜像,并分享或部署它。
补充说明:
- 镜像层:镜像是由多层文件系统组成的,每一层都有自己的修改。比如,基础镜像、安装包、环境变量等都会在不同层中表示。 docker inspect 可以看到这些层的详细信息。
- Docker Hub****和私有仓库:除了默认的 Docker Hub,用户还可以设置并使用私有镜像仓库。如果你有很多私有镜像或者需要将镜像存储在某个私有云中,可以选择 Docker Registry。
- 镜像的标签(Tag):镜像的标签用于标识同一镜像仓库中的不同版本。 latest 是默认标签,但为了避免版本问题,建议给镜像明确的标签,如 v1.0 、 v1.1 等。
总结:
这些基本操作对于管理 Docker 镜像非常重要,无论是本地使用、存储备份,还是上传到公共或私有仓库,都可以通过这些命令来完成。
配置镜像加速器是针对网络速度较慢的用户,能有效提升镜像拉取速度。