Docker了解与安装
Docker
一、容器是什么?
本质:Docker 镜像的运行实例,是一个轻量级的、可独立运行的进程隔离环境。
内容:包含应用程序及其所有依赖(代码、运行时、库、配置等)。
特点:可创建、启动、停止、删除;每个容器相互隔离,拥有自己的文件系统、网络和进程空间。
一句话:容器 = 镜像跑起来之后的“活体”。
二、镜像是什么?
本质:创建容器的只读模板,是一个静态文件。
内容:应用代码 + 运行时 + 系统工具 + 库 + 环境变量 + 配置文件等。
类比:镜像 ≈ 面向对象中的“类”,容器 ≈ “类的实例”。
构建与复用:通过
Dockerfile定义,构建后可上传到仓库(如 Docker Hub)共享复用。
三、容器 vs 虚拟机(核心区别)
四、Docker 底层使用的技术(核心支撑)
Docker 本质上是对 Linux 容器(LXC) 的封装,依赖宿主机内核提供的两项核心技术:
Namespace(命名空间)
负责隔离,让每个容器拥有独立的进程树、网络栈、文件系统挂载点、用户 ID 等,容器内部“以为”自己独享系统。
Cgroups(控制组)
负责限制和监控资源,控制每个容器能使用的 CPU、内存、磁盘 I/O、网络带宽,防止相互争抢。
补充(来自你原文件):虚拟化分类中,容器虚拟化(如 Docker) 与 硬件辅助虚拟化(如 KVM) 同属高性能方案,优于仿真虚拟化和半虚拟化。
五、Docker 的其他核心组件
Docker 引擎:创建和管理容器的核心服务。
Docker 仓库:存镜像的地方(公有如 Docker Hub)。
Docker Compose:用 YAML 文件定义并运行多容器应用。
Docker Swarm:Docker 自带的集群管理工具(多节点编排)。
六、适用场景
最适合:微服务、CI/CD、多环境一致部署、资源优化、DevOps。
不太适合:需要极强安全隔离、或必须跑不同操作系统的场景(此时选 VM)。
安装与配置
安装Docker工具
# 安装依赖(无法安装继续下面的步骤)
yum install -y dnf-utils device-mapper-persistent-data lvm2
# 下载Docker官方yum源
wget https://download.docker.com/linux/centos/docker-ce.repo -P /etc/yum.repos.d/
# 替换成清华源
sed -i 's#download.docker.com#mirrors.tuna.tsinghua.edu.cn/docker-ce#g' /etc/yum.repos.d/docker-ce.repo
# 强制将 $releasever 变量替换为 Docker 官方实际支持的版本号(如 9 或 8)
sed -i 's/$releasever/9/g' /etc/yum.repos.d/docker-ce.repo
# 原因:您的麒麟系统 $releasever=11,但 Docker 仓库无此目录,导致 404 错误
# 清理并重建缓存(验证修改是否成功)
yum clean all
yum makecachedocker 安装
卸载旧版本
# 彻底卸载旧版本或可能存在冲突的 Docker 软件包
yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine安装docker并启动
# 安装docker
yum -y install docker-ce
## 安装docker及核心组件
yum install -y docker-ce docker-ce-cli containerd.io
# 设置开机自启
systemctl enable docker
# 执行命令后显示
Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /usr/lib/systemd/system/docker.service.
# 立即启动Docker服务
systemctl start docker
# 验证启动
systemctl status docker
# 显示客户端版本号
docker -v
# 显示结果
Docker version 29.6.2, build dfc4efbdocker配置文件
# 1、关闭docker
systemctl stop docker
# 会显示以下【意思是:正在停止 docker.service,但它的触发单元 docker.socket 仍然处于活动状态】
Stopping 'docker.service', but its triggering units are still active:
docker.socket
# 2、编辑docker配置文件,默认没有
# registry-mirrors设置国内镜像站,加速下载镜像
vim /etc/docker/daemon.json
# 添加以下内容
{
"registry-mirrors": [
"https://0c105db5188026850f80c001def654a0.mirror.swr.myhuaweicloud.com",
"https://5tqw56kt.mirror.aliyuncs.com",
"https://docker.1panel.live",
"http://mirrors.ustc.edu.cn",
"http://mirror.azure.cn",
"https://hub.rat.dev",
"https://docker.chenby.cn",
"https://docker.hpcloud.cloud",
"https://docker.m.daocloud.io",
"https://docker.unsee.tech",
"https://dockerpull.org",
"https://dockerhub.icu",
"https://proxy.1panel.live",
"https://docker.1panel.top",
"https://docker.1ms.run",
"https://docker.ketches.cn"
]
}
# 3、重载docker服务、重启docker生效配置
systemctl daemon-reload
systemctl restart docker
# 4、查看docker的监听地址和端口
ps aux | grep dockerd
# 显示内容
root 4154 7.3 6.2 1947624 89656 ? Ssl 09:14 0:00 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sockdocker client 与 daemon分离
“分离”指的就是 Docker 客户端(Client) 和 Docker 守护进程 (Daemon) 是各自独立运行的两个进程
这个架构的核心设计理念是 “分离控制与执行”,这赋予了 Docker 强大的远程管理能力和生态扩展性。
Ubuntu 安装与配置 Docker
1. 更新系统包索引
sudo apt update
sudo apt upgrade -y2. 安装依赖包
sudo apt install -y apt-transport-https ca-certificates curl software-properties-common3. 添加 Docker 官方 GPG 密钥
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg4. 添加 Docker APT 源(使用阿里云镜像加速)
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null如果
$(lsb_release -cs)返回的版本名(如focal、jammy)在 Docker 源中不存在,可手动替换为最近 LTS 版本名,例如jammy(22.04)或focal(20.04)。
5. 更新 APT 缓存
sudo apt update6. 卸载旧版本 Docker(如有)
sudo apt remove docker docker-engine docker.io containerd runc -y7. 安装 Docker 及核心组件
sudo apt install -y docker-ce docker-ce-cli containerd.io8. 启动 Docker 并设置开机自启
sudo systemctl enable docker
sudo systemctl start docker9. 验证安装
sudo systemctl status docker
docker -v
示例输出:
Docker version 29.7.2, build a7dcaa610. 配置 Docker 镜像加速器
停止 Docker 服务
sudo systemctl stop docker创建或编辑 /etc/docker/daemon.json
sudo mkdir -p /etc/docker
sudo vim /etc/docker/daemon.json添加以下内容(镜像站列表可自行精简):
{
"registry-mirrors": [
"https://0c105db5188026850f80c001def654a0.mirror.swr.myhuaweicloud.com",
"https://5tqw56kt.mirror.aliyuncs.com",
"https://docker.1panel.live",
"http://mirrors.ustc.edu.cn",
"http://mirror.azure.cn",
"https://hub.rat.dev",
"https://docker.chenby.cn",
"https://docker.hpcloud.cloud",
"https://docker.m.daocloud.io",
"https://docker.unsee.tech",
"https://dockerpull.org",
"https://dockerhub.icu",
"https://proxy.1panel.live",
"https://docker.1panel.top",
"https://docker.1ms.run",
"https://docker.ketches.cn"
]
}重新加载并重启 Docker
sudo systemctl daemon-reload
sudo systemctl restart docker11. 验证 Docker 监听地址(可选)
ps aux | grep dockerd
示例输出:
root 24233 3.6 2.2 2025636 88384 ? Ssl 01:13 0:00 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
root 24431 0.0 0.0 6544 2272 pts/1 S+ 01:13 0:00 grep --color=auto dockerd12. (可选)将当前用户加入 docker 组,避免每次使用 sudo
sudo usermod -aG docker $USER
newgrp dockerDocker了解与安装
本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。
评论交流
欢迎留下你的想法