学习Docker前提:多环境安装Docker
一、Docker 版本
Docker发展过程中衍生了以下版本,目前我们学习和使用提到的版本是docker-ce。
Ixc:上文中提到,Ixc是最早的linux容器技术,早期版本的docker直接使用Ixc来实现容器的底层功能。虽然使用者相对较少,但xc项目仍在持续开发演进中。
libcontainer:docker从 O.9 版本开始自行开发了libcontainer模块来作为Ixc 的替代品实现容器底层特性,并在1.10版本彻底去除了Ixc。在1.11版本拆分出runc后,libcontainer也随之成为了runc 的核心功能模块,runc后续变成了容器标准。
moby:moby是docker公司发起的开源项目,其中最主要的部分就是同名组件moby,事实上这个moby就是dockerd目前使用的开源项目名称,docker项目中的engine(dockerd)仓库现在就是从moby仓库fork而来的,使用containerd作为运行时标准。https://mobyproject.org/
docker-ce:docker的开源版本,CE指Community Edition。docker-ce中的组件来自于moby、containerd等其他项目。https://www.docker.com/pricing/
docker-ee:docker的收费版本,EE指Enterprise Edition。其基础组件来源和docker-ce是一样的,但附加了一些其他的组件和功能。https://www.docker.com/pricing/
二、Docker 官方网站
docker官方网址
三、Docker 架构
Docker 仓库(Registry)
Docker仓库用来保存镜像,可以理解为代码控制中的代码仓库。Docker Hub供了庞大的镜像集合供使用。
Docker daemon
Docker daemon是服务器组件,是Docker最核心的后台进程,我们也把它称为守护进程。
Docker 客户端(Client)
Docker客户端通过命令行或者其他工具使用DockerAPI与Docker的守护进程通信。
Docker主机(Host)
一个物理或者虚拟的机器用于执行Docker守护进程和容器。
Docker 镜像(Images)
Docker镜像是用于创建Docker容器的模板。
Docker 容器(Container)
容器是独立运行的一个或一组应用。
四、Docker 生态
****新时代软件述求****
**数据量疯狂增长**
随着物联网、边缘计算等智能终端设备不断普及,受到来自物联网设备信号、元数据、娱乐相关数据、云计算和边缘计算的数据增长的驱动,全球数据量呈现加速增长。根据 IDC 分布的《数据时代 2025 》预测,全球数据量将从 2018 年的 33ZB 增至 2025年的 175ZB ,增长超过 5 倍;中国平均增速快于全球 3% ,预计到 2025 年将增至48.6ZB ,占全球数据圈的比例由 23.4% 提升至 27.8% 。其中,中国企业级数据量将从2015 年占中国数据量的 49 %增长到 2025 年的 69 %。

**处理能力快速增加**
腾讯云全球服务器数量 100w+ ,数据量 EB+ ; 2020 年阿里云:在全国已建成 5 大超级数据中心,阿里云在全球 22 个地域部署了上百个数据中心,服务器的总规模数已经接近 200 万台。某省疾控中心疫苗预约系统、全员核酸检测系统、健康码系统共 300 余台服务器,并为核酸检测系统快速扩容计算和存储资源。
**软件需求爆发式增长**
软件发布频繁:
研发模式从瀑布开发演变为敏捷开发,原来 3 个月上一次新功能,现在两周一次,而开发过程中我们也经常遇到需要修改需求,然后变更再发布的情况。软件上线有问题需要快速回滚,对软件有着极强的版本管理和回滚诉求。
****Docker 解决方案****
云时代需要我们针对这些诉求有一套针对的解决方案。我们要处理海量的数据,如何处理呢?购买大量的服务器,并研发对应软件开发的需求需要频繁的变更上线,如何才能将修改的代码快速的分发到几百或者几千台服务器呢?如何共享软件呢?搞一个中心仓库,让各个服务器去下载软件包,安装,所以 CentOS 搞了 yum 仓库,docker 设计了镜像仓库, docker hub 是公共的托管仓库。软件设计好以后,怎么快速安装启动,有问题回滚呢?将 docker 需要的所有信息设计一套软件格式,把所有的依赖搞进去,并打上版本标签,这样不会换一个服务器各种问题,所以 Docker 设计了镜像。不同的开发环境怎么搭建呢,一会 java,一会 c++?docker 设计了镜像来应对,镜像里面存放了需要运行的环境,就像我们的 iPhone 内置 ios ,我们的华为 mate 50 内置鸿蒙一样,一条命令就可以完成某个环境的搭建。
五、Docker 安装
5.1、Ubuntu 安装 Docker
****安装依赖****
操作系统版本:
Ubuntu Kinetic 22.10Ubuntu Jammy 22.04 (LTS)Ubuntu Focal 20.04 (LTS)Ubuntu Bionic 18.04 (LTS)CPU 支持:ARM 和 X86_64X86_64:是一个复杂指令级的,x86的它单核的性能非常高ARM :则是个精简指令集的,它会有很多核来工作。
****安装Docker****
// 1.查看机器是什么机器,确认系统版本是什么
cat /etc/*release*// 2.确定CPU是什么类型, arm or x86
uname -a// 3.卸载旧版本,如果是新购买的云服务器是没有的,比如输入 docker 并没有这个命令,就不需要卸载
sudo apt-get remove docker docker-engine// 4.卸载历史版本
#卸载软件
sudo apt-get purge docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin docker-ce-rootless-extras -y
#删除目录
sudo rm -rf /var/lib/docker
sudo rm -rf /var/lib/containerd// 5.配置 docker 下载源
#curl 命令安装
sudo apt install curl -y
#创建 gpg key 目录
sudo mkdir -m 0755 -p /etc/apt/keyrings
#下载 gpg key
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor --yes -o /etc/apt/keyrings/docker.gpg
echo \"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \$(lsb_release -cs) stable" | sudo tee
/etc/apt/sources.list.d/docker.list > /dev/null
#查看系统源
cat /etc/apt/sources.list
#查看Docker源
cat /etc/apt/sources.list.d/docker.list// 6. 安装
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y *此时可能会有引擎启动失败问题
**查看日志**
#journalctl是操作系统日志查看命令
#-e表示从末尾看
#-u表示看哪个系统组件的,我们的组件是docker,所以指令为:journalctl -eu docker// 7.自动启动配置·
#配置加载
sudo systemctl daemon-reload
#启动服务
sudo systemctl start docker
#开启启动
sudo systemctl enable docker
#查看服务状态
sudo systemctl status docker// 8.检查安装结果查看版本
docker version
docker info// 9. 执行 hello-world 可以看到 Hello from Docker,表面 docker 服务正常
sudo docker run hello-world
****实战经验***
**Docker 镜像源修改**
JSON
{"registry-mirrors": ["https://mirror.ccs.tencentyun.com"]
} {"registry-mirrors": ["https://docker.m.daocloud.io","https://dockerhub.timeweb.cloud","https://huecker.io"]
} sudo systemctl daemon-reload
sudo systemctl restart docker docker info 查看信息:

**Docker 目录修改**
#假定我们磁盘的大的目录为 /data
mkdir -p /data/var/lib/docker
# 编辑配置文件
vi /etc/docker/daemon.json
# 输入下面的 json
{
"data-root": "/data/var/lib/docker"
}
# 加载配置
sudo systemctl daemon-reload
# 重启 docker
sudo systemctl restart docker
#查看 docker 状态
sudo systemctl status docker
修改前在/var/lib/docker 下:

修改后在/data/var/lib/docker 下

5.2、CentOS 安装 Docker
****安装依赖****
操作系统版本:
CentOS 7 -- 停止更新已经不再支持CentOS 8 (stream)CentOS 9 (stream)CPU 支持:ARM 和 X86_64X86_64:是一个复杂指令级的,x86的它单核的性能非常高ARM :则是个精简指令集的,它会有很多核来工作。
****安装Docker****
// 1.查看机器是什么机器,确认系统版本是什么
cat /etc/*release*// 2.确定CPU是什么类型, arm or x86
uname -a// 3.卸载旧版本,如果是新购买的云服务器是没有的,比如输入 docker 并没有这个命令,就不需要卸载
sudo yum remove docker docker-client docker-client-latest docker-common docker-latest \ docker-latest-logrotate docker-logrotate docker-engine// 4.卸载历史版本
#卸载软件
sudo yum remove docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin docker-ce-rootless-extras
#删除目录
sudo rm -rf /var/lib/docker
sudo rm -rf /var/lib/containerd// 5.配置仓库
ll /etc/yum.repos.d/
sudo yum install -y yum-utils
sudo yum-config-manager --add-repo
ll /etc/yum.repos.d/
#查看系统源
cat /etc/apt/sources.list
#查看Docker源
cat /etc/apt/sources.list.d/docker.list// 6. 安装最新版本
sudo yum install -y docker-ce// 7.启动 docker
#配置加载
sudo systemctl daemon-reload
#启动服务
sudo systemctl start docker
#开启启动
sudo systemctl enable docker
#查看服务状态
sudo systemctl status docker// 8.检查安装结果查看版本
docker version
docker info// 9. 执行 hello-world 可以看到 Hello from Docker,表面 docker 服务正常
sudo docker run hello-world
****实战经验***
与 Ubuntu安装 docker 的实战经验一样。
5.3、Windows 安装 Docker
****安装依赖****
确定开启虚拟化

选择 windows 子系统

以管理员权限运行PowerShell查看版本,如果不是2需要更新到2:wsl --statusPowerShell运行命令更新wsl到最新版本:wsl--update、设置wsl默认版本:wsl--Set-default-version
通过微软应用商店安装Ubuntu22.04
![]()
启动:成功如下现象:
****安装Docker****
- 点击链接下载Docker: desktop.docker.com
- 下载好之后双击 Docker Desktop Installer.exe 开始安装
- 点击 Docker Desktop 桌面快捷方式运行 Dokcer
- 确认 Docker 安装成功, 在 PowerShell 中输入 docker version 命令确认 Client 和 Server 是否启动


