文章目录
前言
Docker 是一个开源的平台,用于自动化应用程序在容器中的部署、管理和运行。它通过将应用程序及其依赖项打包到一个标准化的单元中,使得软件能够在任何环境下保持一致的运行状态
一、Docker 的关键概念
1.容器(Container)
容器是Docker的核心概念。它是一个轻量级的、可执行的独立软件包,包含了应用程序及其所有依赖项(如库、配置文件等),能够在不同环境中一致地运行。与虚拟机不同,容器共享操作系统内核,因此启动速度快,资源消耗低。
2.镜像(Image)
镜像是用于创建容器的静态文件。它包含了应用程序、运行时环境、库以及配置文件等。镜像是不可变的,在镜像上启动容器时,会根据镜像内容生成一个运行中的容器。
3.Dockerfile
Dockerfile是一个包含了构建Docker镜像指令的文本文件。开发者可以通过编写Dockerfile,定义镜像的构建过程,包括安装应用程序、设置环境变量、配置文件等。Docker通过读取Dockerfile生成镜像。
4.Docker引擎(Docker Engine)
Docker引擎是Docker的核心组件,负责容器的创建、管理和运行。它包含了Docker守护进程(Docker Daemon)、REST API接口以及命令行工具(Docker CLI)。Docker守护进程管理着容器的生命周期,API接口和CLI工具允许用户与Docker进行交互。
5.Docker Hub
Docker Hub 是一个公共的容器镜像库,用户可以在Docker Hub上查找、下载和分享容器镜像。它提供了成千上万的官方和用户生成的镜像,用于快速构建和部署应用程序。
二、Docker 的优势
1.跨平台一致性
通过容器化,Docker确保了应用程序在开发、测试和生产环境中的一致性。容器内部包含所有依赖项,因此不受外部操作系统环境的影响。
2.轻量级
与虚拟机相比,Docker容器更轻量级。因为容器共享操作系统内核,每个容器仅需要运行特定应用程序及其依赖项,这使得容器的启动速度更快,资源开销更低。
3.快速部署
Docker镜像可以在几秒钟内启动一个容器,极大地加快了应用程序的部署速度。开发人员可以更频繁地发布和更新应用程序
4.微服务架构支持
Docker非常适合微服务架构。在这种架构中,应用程序被拆分为多个小的、独立部署的服务。每个服务都可以被容器化,并独立于其他服务部署和运行
5.版本控制与回滚
Docker镜像是版本化的,每个镜像都有一个唯一的标签。用户可以轻松回滚到之前的版本,或者并行运行多个版本的应用程序
6.扩展性
Docker与集群管理工具(如Kubernetes)结合使用,可以轻松实现应用程序的扩展。多个容器可以在不同的主机上协同工作,以满足高负载的需求
三、Docker 的使用场景
1.持续集成和持续部署(CI/CD)
Docker在CI/CD流水线中被广泛使用,可以简化构建、测试和部署的过程,使得每个步骤都能够在一致的环境中执行
2.多云部署
由于Docker容器化的应用程序不依赖于特定的操作系统或云提供商,因此可以轻松地在不同的云环境中进行部署
3.开发环境标准化
开发人员可以使用Docker创建标准化的开发环境,避免“在我机器上正常”的问题。团队中的每个成员都可以使用相同的容器化环境进行开发
4.应用程序隔离
Docker允许不同的应用程序在同一台机器上运行而互不干扰,提供了应用程序之间的隔离性,提升了安全性和资源利用效率
四、Docker安装
1. 安装必要的一些系统工具
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
yum-utils
:一组包含yum-config-manager
等有用工具的包,帮助管理YUM仓库和软件包。device-mapper-persistent-data
:Device Mapper是Linux内核中的一部分,用于提供对高级存储管理的支持。这个包包含了持久数据管理工具,Docker用它来管理容器的存储。lvm2
:Logical Volume Manager 2(LVM2)是用于管理磁盘分区的工具。Docker使用LVM来实现可扩展的存储管理。这些工具是安装Docker所需的基础设施,确保Docker在系统上能够正确配置和运行
[root@VM-4-13-centos ~]# sudo yum install -y yum-utils device-mapper-persistent-data lvm2
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
epel | 4.3 kB 00:00:00
extras | 2.9 kB 00:00:00
os | 3.6 kB 00:00:00
updates | 2.9 kB 00:00:00
Package yum-utils-1.1.31-54.el7_8.noarch already installed and latest version
Package device-mapper-persistent-data-0.8.5-3.el7_9.2.x86_64 already installed and latest version
Package 7:lvm2-2.02.187-6.el7_9.5.x86_64 already installed and latest version
Nothing to do
[root@VM-4-13-centos ~]#
执行结果输出内容解释:
Loaded plugins: fastestmirror, langpacks
:
fastestmirror
:这是一个YUM插件,用于自动选择下载最快的软件源镜像。langpacks
:这是另一个YUM插件,管理系统的语言包,确保系统和软件支持多语言环境。
Loading mirror speeds from cached hostfile
:
- YUM正在从缓存的主机文件中加载镜像速度信息,这个过程有助于快速选择下载软件包的最佳镜像源。
epel
,extras
,os
,updates
:
- 这些是你系统上已配置的YUM软件仓库或镜像源。每一行表示YUM在从这些仓库中加载软件包信息。它们的内容如下:
epel
:Extra Packages for Enterprise Linux,一个为RHEL和CentOS等发行版提供额外软件包的仓库。extras
:CentOS的额外软件包仓库。os
:CentOS的基础操作系统软件包仓库。updates
:用于系统和软件更新的仓库。
Package yum-utils-1.1.31-54.el7_8.noarch already installed and latest version
:
- 系统检测到
yum-utils
包已经安装,并且是最新版本 (1.1.31-54.el7_8.noarch
)。
Package device-mapper-persistent-data-0.8.5-3.el7_9.2.x86_64 already installed and latest version
:
- 系统检测到
device-mapper-persistent-data
包已经安装,并且是最新版本 (0.8.5-3.el7_9.2.x86_64
)。
Package 7:lvm2-2.02.187-6.el7_9.5.x86_64 already installed and latest version
:
- 系统检测到
lvm2
包已经安装,并且是最新版本 (2.02.187-6.el7_9.5.x86_64
)。
Nothing to do
:
- 由于所有指定的软件包都已安装且为最新版本,因此系统没有需要执行的安装操作。这表示这个步骤已完成,且不需要进一步的动作。
2.添加软件源信息
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum-config-manager --add-repo
:这个命令用于添加一个新的YUM软件仓库。http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
:这是阿里云提供的Docker-CE(Community Edition)软件仓库URL。Docker-CE是Docker的开源版本,阿里云的镜像源可以加快下载速度。通过添加这个仓库,你可以从Docker官方或镜像站获取最新的Docker软件包
[root@VM-4-13-centos ~]# sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
Loaded plugins: fastestmirror, langpacks
adding repo from: http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
grabbing file http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo to /etc/yum.repos.d/docker-ce.repo
repo saved to /etc/yum.repos.d/docker-ce.repo
执行结果输出内容解释:
Loaded plugins: fastestmirror, langpacks
:
- 这表示YUM加载了一些插件:
fastestmirror
:用于选择最快的镜像源,从而加速软件包下载。langpacks
:管理系统的语言包,确保多语言环境的支持。
adding repo from: http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
:
- 这表示YUM正在添加一个新的软件源(仓库)。这个源来自阿里云的Docker-CE镜像仓库URL。
grabbing file http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo to /etc/yum.repos.d/docker-ce.repo
:
- YUM正在从指定的URL下载该仓库的配置文件,并将其保存到系统的YUM配置目录中。这个配置文件定义了Docker-CE软件包的下载地址及相关的YUM仓库信息。
repo saved to /etc/yum.repos.d/docker-ce.repo
:
- 最终,YUM已将仓库配置文件保存到系统的
/etc/yum.repos.d/
目录下,文件名为docker-ce.repo
。这个目录存放了所有的YUM仓库配置文件
3.更新并安装 Docker-CE
sudo yum makecache fast
sudo yum -y install docker-ce
yum makecache fast
:这个命令用于生成YUM缓存,以确保可以从新添加的软件源中快速获取软件包信息。fast
参数加快了这个过程。yum -y install docker-ce
:安装Docker-CE,-y
参数表示自动确认所有提示,避免人工干预。这一部分确保系统安装了最新版本的Docker-CE,并且配置已经准备好接收Docker相关软件包。
[root@VM-4-13-centos ~]# sudo yum makecache fast
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
docker-ce-stable | 3.5 kB 00:00:00
epel | 4.3 kB 00:00:00
extras | 2.9 kB 00:00:00
os | 3.6 kB 00:00:00
updates | 2.9 kB 00:00:00
(1/2): docker-ce-stable/7/x86_64/updateinfo | 55 B 00:00:00
(2/2): docker-ce-stable/7/x86_64/primary_db | 152 kB 00:00:00
Metadata Cache Created
执行结果输出内容解释:
Loaded plugins: fastestmirror, langpacks
:
fastestmirror
:YUM加载了fastestmirror
插件,该插件用于自动选择最快的镜像源,以加快软件包的下载速度。langpacks
:YUM加载了langpacks
插件,该插件用于管理语言包,确保系统支持多语言环境。
Loading mirror speeds from cached hostfile
:
- YUM正在从缓存的主机文件中加载镜像源的速度信息。这个步骤帮助YUM选择最优的镜像源以加快下载速度。
docker-ce-stable
- 表示从
docker-ce-stable
仓库下载了元数据文件。docker-ce-stable
是刚刚添加的Docker-CE稳定版的YUM仓库。
epel
- 表示从
epel
(Extra Packages for Enterprise Linux)仓库下载的元数据文件。
extras
:
- 表示从
extras
仓库下载的元数据文件。
os
- 表示从
os
仓库下载的元数据文件。
updates
- 表示从
updates
仓库下载B的元数据文件。
(1/2): docker-ce-stable/7/x86_64/updateinfo
- 表示从
docker-ce-stable
仓库下载的updateinfo
文件,用于提供软件包的更新信息。
(2/2): docker-ce-stable/7/x86_64/primary_db
- 表示从
docker-ce-stable
仓库下载的primary_db
文件,这是YUM的主数据库文件,包含了仓库中所有软件包的元数据信息。
Metadata Cache Created
:
- 表示YUM已经成功创建或更新了本地的元数据缓存。这意味着YUM现在已经缓存了所有必要的元数据文件,可以快速地访问这些数据以进行软件包的安装和管理。
4.开启Docker服务
sudo service docker start
service docker start
:这是一个用于启动Docker守护进程的命令。Docker守护进程是Docker的核心服务,负责管理和运行容器。执行完这个命令后,Docker守护进程将在后台运行,系统已经准备好运行Docker容器
[root@VM-4-13-centos ~]# sudo service docker start
Redirecting to /bin/systemctl start docker.service
5.安装版本检查
docker version
6.Docker镜像配置
Docker 默认镜像为Docker Hub,可以基于自己的选择使用国内的镜像,此处使用了阿里镜像
方式1:
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://<your-mirror-url>"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
方式2:
sudo vi /etc/docker/daemon.json
# 添加镜像
{
"registry-mirrors": ["https://<your-mirror-url>"]
}
# 重新加载配置及重启
sudo systemctl daemon-reload
sudo systemctl restart docker
阿里的镜像每个人都是不同的,需要进入阿里云控制台进行查阅
总结
以上步骤通过安装必要的工具、配置软件源、安装Docker-CE和启动Docker服务,完成了Docker在CentOS系统上的安装。安装完成后,可以使用Docker命令行工具来管理容器、镜像和其他Docker资源。