当前位置: 首页 > news >正文

Docker 容器引擎安装与基本配置


一、安装前的说明

上一节介绍了 Docker 的三大组成部分:客户端、Docker 守护进程、镜像仓库。本节开始实际安装 Docker 容器引擎,安装过程中会同时安装客户端命令(docker 命令)。至于镜像仓库,暂时不安装自己的,直接使用官方提供的现成镜像仓库,里面已经有各种镜像可以直接拉取使用。后面再学习搭建自己的镜像仓库、制作自己的镜像并推送到自己的仓库中。


二、环境准备

1. 关闭 SELinux

[root@docker01 ~]# sed -i 's#enforcing#disabled#g' /etc/selinux/config
[root@docker01 ~]# setenforce 0
setenforce: SELinux is disabled

sed 修改 SELinux 配置文件将其改为 disabled 状态(需要重启才能永久生效),同时 setenforce 0 让当前环境立即关闭 SELinux。

2. 关闭防火墙

[root@docker01 ~]# systemctl disable --now firewalld

3. 关闭 swap 分区

[root@docker01 ~]# swapoff -a
[root@docker01 ~]# freetotal        used        free      shared  buff/cache   available
Mem:        2027896      172292     1741600        9668      114004     1718348
Swap:             0           0           0

swapoff -a 立即关闭 swap,free 查看确认 Swap 行全部为 0。

要想永久生效,需要编辑 /etc/fstab,把 swap 分区那一行注释掉:

[root@docker01 ~]# vim /etc/fstab
...
# UUID=7f6439a8-2dcc-47d9-b423-f80a377c92e3 swap                    swap    defaults        0 0

为什么安装容器引擎要关闭 swap 分区?

关闭 SELinux 和防火墙是常规操作,容易理解。但关闭 swap 的原因需要从容器三大核心技术之一的 cgroup 说起。

cgroup 用来限制容器进程对主机资源(CPU、内存、磁盘)的使用。重点关注内存限制这个场景:

Linux 系统中内存分为物理内存swap 分区(虚拟内存)。当物理内存不够用时,操作系统会把物理内存中的部分数据转移到 swap 分区(一块磁盘空间),系统运行效率会降低。

假设用 cgroup 限制某个容器最多只能使用 2G 内存。理论上,容器内存使用超过 2G 时应该被干掉。但如果开启了 swap 分区,当容器内存快达到 2G 临界点时,操作系统会把物理内存中的数据往 swap 分区写,导致容器并不会因为超限而被终止——cgroup 的内存限制形同虚设。

所以通常使用 Docker 时会直接关闭 swap 分区,这样 cgroup 对容器的内存限制才能真正生效:容器进程一旦超过规定的内存空间,就会被干掉。

补充说明:实际生产中并不能一刀切地关闭 swap。有些场景下仍需要开启宿主机的 swap 分区,但对个别容器不让它用 swap,另一些容器又允许用 swap。这涉及到更实战的配置,后面再深入介绍。现在刚开始使用,先一了百了地关掉。


三、安装 Docker

1. 卸载旧版本(如果之前安装过)

yum remove docker docker-common docker-selinux docker-engine -y

如果之前没有安装过 Docker,这一步可以跳过。

2. 安装依赖包

yum install -y yum-utils device-mapper-persistent-data lvm2 wget

3. 添加 Docker 的 yum 源

yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

有了这个 yum 源,就可以从中下载 Docker 容器引擎和客户端命令。

4. 安装 Docker

yum install docker-ce -y

安装过程中,作为依赖会一并安装以下组件:

组件 说明
docker-ce Docker 守护进程(dockerd
docker-ce-cli Docker 客户端命令
containerd 容器引擎的第二层,dockerd 接收到客户端命令后调用它来创建容器
runc 容器运行时,最底层真正创建并运行容器的组件

对照之前讲过的容器引擎四层结构(dockerdcontainerdcontainerd-shimrunc),安装时这些组件都会一并装好。

5. 启动 Docker

[root@docker01 ~]# systemctl start docker

启动后,Docker 的配置文件目录 /etc/docker/ 就会自动创建出来。


四、docker info 基本信息

启动后可以用 docker info 查看 Docker 的基本信息,其中几个重要字段:

字段 默认值 说明
Server Version 20.10.x Docker 服务端版本
Storage Driver overlay2 联合文件系统驱动,overlay2 比 overlay 支持更多层级
Cgroup Driver cgroupfs cgroup 驱动,默认为 cgroupfs
Docker Root Dir /var/lib/docker Docker 数据目录
Live Restore Enabled false 重启 Docker 服务时是否保持容器运行

关于 Docker 数据目录

Docker 数据目录用来存放:拉取到本地的镜像、为容器创建的 UpperDir 目录、容器运行过程中产生的数据等。

默认的数据目录是 /var/lib/docker,如果这个目录没有挂载单独的磁盘,就会落到根分区对应的磁盘上。随着拉取的镜像和运行的容器越来越多,很容易把根分区占满,导致系统出现空间不够用的问题。所以通常这个数据目录应该关联一个比较大的磁盘。 关于数据目录的迁移,下一节专门介绍。


五、修改 Docker 配置文件

编辑 /etc/docker/daemon.json

[root@docker01 ~]# vim /etc/docker/daemon.json

写入以下内容(JSON 格式,key-value 结构,每个配置项后面加逗号,最后一项不加):

{
"exec-opts": ["native.cgroupdriver=systemd"],
"registry-mirrors":["https://reg-mirror.qiniu.com/"],
"live-restore": true
}

各配置项说明

exec-opts:修改 cgroup 驱动

将 cgroup 驱动从默认的 cgroupfs 改为 systemd。systemd 在 CentOS 7 之后用得越来越多,它是在 cgroup 基础之上做了封装,让限制容器资源使用时的操作更简单。建议改成 systemd,不改也能用。

registry-mirrors:镜像加速

默认使用的官方镜像仓库是国外地址,拉取镜像速度较慢。配置一个镜像加速代理(如七牛云的 https://reg-mirror.qiniu.com/),它会缓存官方镜像到国内节点,下载速度更快。阿里云等也有类似的加速服务。

live-restore:容器存活保护

默认为 false,意味着 Docker 服务挂掉或重启时,它启动的所有容器都会跟着一起挂掉。改为 true 后,即便 Docker 服务挂掉,已启动的容器不会受影响,建议加上。


六、重启并设置开机自启

[root@docker01 ~]# systemctl restart docker
[root@docker01 ~]# systemctl enable --now docker.service
Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /usr/lib/systemd/system/docker.service.

验证配置是否生效

[root@docker01 ~]# docker info...
Cgroup Driver: systemd
Live Restore Enabled: true
Registry Mirrors:https://reg-mirror.qiniu.com/
  • Cgroup Driver 已改为 systemd
  • Live Restore 已开启 ✓
  • Registry Mirrors 已配置七牛云加速 ✓

七、本节总结与下一步

步骤 要点
环境准备 关闭 SELinux、防火墙、swap 分区(swap 关闭是为了让 cgroup 内存限制真正生效)
安装 Docker 添加 yum 源后 yum install docker-ce,会同时安装客户端、containerd、runc 等组件
配置文件 /etc/docker/daemon.json,配置 cgroup 驱动、镜像加速、live-restore
数据目录 默认 /var/lib/docker,应关联大磁盘,防止根分区被占满

下一节:介绍 Docker 数据目录的迁移方案,然后快速启动一个容器,将过去学的 namespace、Overlay 联合挂载等知识做一个整体串联。

http://www.jsqmd.com/news/1041508/

相关文章:

  • 武汉科谷技工学校2026年电子商务专业招生简章|初中毕业学电商有没有用|技能高考升学班 - 武汉中职最新信息发布
  • 国内大学生高频使用的AI论文写作软件有哪些?
  • 【干货】7套核心数据分析思维框架,搞定90%业务涨跌问题
  • 2026西双版纳黄金回收白银回收铂金回收门店+工商公安双备案+中检认证商家推荐 - 诚金汇钻回收公司
  • 崇左市黄金回收实体店怎么选?这份清单帮你货比三家 - 奢金汇
  • 阿坝藏族羌族自治州黄金回收猫腻多怎么办?整理了5家诚信回收店供参考 - 奢金阁
  • 咸宁市奢侈品手表包包回收价格差距高达15%:实测对比告诉你哪家店报价最实在 - 谊识预商贸
  • Django毕设选题推荐:基于 Python 的中小企业综合人事管理系统的设计与实现 基于 Python 的员工入职离职流程管理系统的设计与实现【附源码、mysql、文档、调试+代码讲解+全bao等】
  • 2026郴州放心贵金属回收,CCIC 中检授权收黄金回收铂金回收白银回收持证实体门店 - 中业金奢再生回收中心
  • 2026巴中放心贵金属回收,CCIC 中检授权收黄金回收铂金回收白银回收持证实体门店 - 中业金奢再生回收中心
  • 2026黄金闲置回收靠谱渠道深度测评!闲置黄金高位变现 - 奢品小当家
  • 2026文山黄金回收白银回收铂金回收门店+工商公安双备案+中检认证商家推荐 - 诚金汇钻回收公司
  • 2026延边黄金回收白银回收铂金回收门店+工商公安双备案+中检认证商家推荐 - 诚金汇钻回收公司
  • Word交叉引用进阶:一键生成规范参考文献列表与智能分隔
  • 2026玉溪黄金回收白银回收铂金回收门店实测|本地正规实体老店无套路门店推荐 - 中安检金银铂钻回收
  • 2026大连放心贵金属回收,CCIC 中检授权收黄金回收铂金回收白银回收持证实体门店 - 中业金奢再生回收中心
  • 2026资阳黄金回收白银回收铂金回收门店实测|本地正规实体老店无套路门店推荐 - 中安检金银铂钻回收
  • 九大网盘直链下载助手:告别限速,开启高速下载新时代
  • AI Agent开发面试高频题曝光!从203篇面经提炼,助你拿下Offer!
  • 巴彦淖尔市奢侈品手表包包回收价格差距高达15%:实测对比告诉你哪家店报价最实在 - 谊识预商贸
  • OpenCore Legacy Patcher技术深度解析:为老旧Mac注入新生的底层架构与实战指南
  • 2026大连黄金回收深度测评!5大奢品回收机构横向对比,变现不踩坑攻略 - 奢品小当家
  • 2026鄂尔多斯放心贵金属回收,CCIC 中检授权收黄金回收铂金回收白银回收持证实体门店 - 中业金奢再生回收中心
  • 2026通化黄金回收白银回收铂金回收门店+工商公安双备案+中检认证商家推荐 - 诚金汇钻回收公司
  • 2026广州越秀二手名表去哪家?浪琴宝格丽回收门店盘点 - 逸程
  • 咸阳市闲置爱马仕、劳力士变现指南:奢侈品手表包包回收门店实地测评 - 谊识预商贸
  • 天津包包回收门店排名|禹竞名奢汇碾压铂悦奢包回收等四家门店优选 - 名奢变现站
  • 3步突破流媒体壁垒:猫抓MPD/DASH解析技术完全指南
  • 佛山金条回收对比测评2026,正规机构领衔,报价透明公道 - 奢侈品回收测评
  • 2026.6.19 上海黄金回收门店盘点:避坑指南与深度评测 - 奢侈品回收