基于Centos7进行安装
1.确认系统版本和CPU架构,Centos7的x86_64架构
# cat /etc/*release*
# uname -a
2.卸载旧版本
yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
3.卸载历史版本
# 执行卸载
# yum remove docker-ce docker-ce-cli containerd.io dockerbuildx-plugin docker-compose-plugin docker-ce-rootless-extras
# 删除目录
# rm -rf /var/lib/docker
# rm -rf /var/lib/containerd
# 根据实际情况删除配置文件和对应镜像目录
# rm -rf /data/var/lib/docker
# rm -rf /etc/docker/daemon.json
4.获取yum源,
# yum install -y yum-utils
# yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
配置使用国内源
# sed -i 's@//download.docker.com@//mirrors.ustc.edu.cn/docker-ce@g' /etc/yum.repos.d/docker-ce.repo
5.安装并启动docker
# yum install -y docker-ce docker-ce-cli containerd.io dockerbuildx-plugin docker-compose-plugin
# systemctl start docker
# systemctl enable docker
# systemctl status docker
6.验证
# docker version
# docker info
7.修改docker安装目录和拉取镜像国内源
Docker 默认的安装目录为/var/lib/docker,这里面会存放很多很多镜像,所以我们在安装的时候需要考虑这个目录的空间,拉取镜像的时候使用国内源可以加快速度。
# cat /etc/docker/daemon.json
{
"registry-mirrors": [
"https://dockerproxy.com",
"https://hub-mirror.c.163.com",
"https://mirror.baidubce.com",
"https://ccr.ccs.tencentyun.com"
],
"data-root" : "/data/var/lib/docker"
}
# systemctl daemon-reload
# systemctl restart docker
rm -rf /这样的危险命令,如果是在容器内就可以保证我们物理主机的安全应用程序执行环境分层

主机虚拟化的原理是通过在物理服务器上安装一个虚拟化层来实现。这个虚拟化层可以在物理服务器和客户操作系统之间建立虚拟机,使得它们可以独立运行。 这个虚拟化层一般通过一个软件来实现,比如说Vmware。
容器虚拟化实现原理
容器虚拟化,有别于主机虚拟化,是操作系统层的虚拟化。通过 namespace 进行各程序的隔离,加上 cgroups 进行资源的控制,以此来进行虚拟化。容器虚拟化基础之 NameSpace
什么是 Namespace(命名空间)
namespace 是 Linux 内核用来隔离内核资源的方式。通过 namespace 可以让一些进程只能看到与自己相关的一部分资源,而另外一些进程也只能看到与它们自己相关的资源,这两拨进程根本就感觉不到对方的存在。具体的实现方式是把一个或多个进程的相关资源指定在同一个 namespace 中。 Linux namespaces 是对全局系统资源的一种封装隔离,使得处于不同 namespace 的进程拥有独立的全局系统资源,改变一个 namespace 中的系统资源只会影响当前namespace 里的进程,对其他 namespace 中的进程没有影响。
控制组(Control Groups)
Docker使用Linux内核的控制组功能,通过控制组可以限制容器使用的资源,如CPU、内存、磁盘IO等。这样可以确保容器之间资源的隔离和公平分配。
| 虚拟机 | Docker | |
|---|---|---|
| 磁盘占用 | 几个G到几十个G | 几十M到几百M |
| CPU和内存占用 | 虚拟操作系统非常占用CPU 和内存,需要通过虚拟层调用占用率高 | Docker 引擎占用资源极低,直接作用于硬件资源占用少 |
| 启动速度 | 从开机到启动项目几分钟 | 从开启容器到运行项目只需几秒 |
| 安装管理 | 需要专门的运维技术 | 通过镜像仓库安装、管理方便 |
| 应用部署 | 手动部署,速度慢 | 体系化部署,可以自动化,速度快 |
| 隔离性 | 系统级别 | 进程级别 |
| 封装程度 | 打包整个操作系统 | 打包项目代码和依赖信息 |
Docker 为什么比虚拟机资源利用率高,启动快?