当前位置: 首页 > 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.gsyq.cn/news/1553414.html

相关文章:

  • 武汉科谷技工学校2026年电子商务专业招生简章|初中毕业学电商有没有用|技能高考升学班 - 武汉中职最新信息发布
  • 崇左市黄金回收实体店怎么选?这份清单帮你货比三家 - 奢金汇
  • 阿坝藏族羌族自治州黄金回收猫腻多怎么办?整理了5家诚信回收店供参考 - 奢金阁
  • 咸宁市奢侈品手表包包回收价格差距高达15%:实测对比告诉你哪家店报价最实在 - 谊识预商贸
  • Word交叉引用进阶:一键生成规范参考文献列表与智能分隔
  • AI Agent开发面试高频题曝光!从203篇面经提炼,助你拿下Offer!
  • OpenCore Legacy Patcher技术深度解析:为老旧Mac注入新生的底层架构与实战指南
  • 周口市奢侈品手表包包回收回收门店权威测评:综合实力最强的五家店铺推荐 - 谊识预商贸
  • 佛山金条回收对比测评2026,正规机构领衔,报价透明公道 - 奢侈品回收测评
  • 佛山回收钻石门店推荐|佛山正规钻石回收商家排名,高价变现首选禹竞名奢汇 - 名奢变现站
  • 3步搞定Buzz离线语音转录:模型下载加速终极指南
  • HeidiSQL实战指南:从零开始高效管理你的数据库
  • 2026郑州二七黄金回收实测|正规门店测评对比 - 薛定谔的梨花猫
  • 2026岳阳黄金回收白银回收铂金回收门店实测|本地正规实体老店无套路门店推荐 - 中安检金银铂钻回收
  • 保山市奢侈品手表包包回收回收门店权威测评:综合实力最强的五家店铺推荐 - 谊识预商务
  • 亳州市奢侈品回收门店红黑榜:综合实力最强的五家店铺推荐 - 谊识预商务
  • 2026吴忠黄金回收白银回收铂金回收门店实测|本地正规实体老店无套路门店推荐 - 中安检金银铂钻回收
  • 东莞市奢侈品手表包包回收回收门店权威测评:综合实力最强的五家店铺推荐 - 谊识预商贸
  • 2026南通黄金回收白银回收铂金回收门店+工商公安双备案+中检认证商家推荐 - 诚金汇钻回收公司
  • 2026宜昌黄金回收白银回收铂金回收门店实测|本地正规实体老店无套路门店推荐 - 中安检金银铂钻回收
  • 高级Python技巧:提升开发效率的10个实用方法
  • 无锡金条回收哪家不扣损耗?报价高于大盘全是陷阱 - 奢侈品回收评测
  • 2026大连黄金回收怎么不踩坑!闲置黄金怎么变现 - 奢品小当家
  • 2026 郑州奢侈品黄金回收行业白皮书:门店盘点与服务标准指南 - 奢侈品回收
  • 丹东市奢侈品手表包包回收回收门店权威测评:综合实力最强的五家店铺推荐 - 谊识预商务
  • 2026合肥理工校园参观预约咨询电话完整版 - 我叫小周
  • UTS 隔离(主机名隔离)
  • Segger Embedded Studio实战:深入剖析链接脚本与内存布局的定制策略
  • RFID微型标签制作厂家的发展现状与未来前景深度分析
  • 宁波海曙区黄金回收行情与正规机构选择指南 - 专业黄金回收