首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Docker 最佳实战:5分钟, CentOS 安装 Docker,有手就行!

Docker 最佳实战:5分钟, CentOS 安装 Docker,有手就行!

原创
作者头像
运维有术
发布于 2024-01-21 11:37:12
发布于 2024-01-21 11:37:12
2.2K07
代码可运行
举报
文章被收录于专栏:运维有术运维有术
运行总次数:7
代码可运行

2024年云原生运维实战文档99篇原创计划 第001篇 Docker 最佳实战「2024」系列 第001篇

前言

你好,欢迎来到运维有术,2024年计划要写99篇原创实战文档,给大家分享更多、更好的运维实战经验。

今天分享的内容是 Docker 最佳实战「2024」 系列文档中的 CentOS 安装配置 Docker

内容导图

实战服务器配置 (架构 1:1 复刻小规模生产环境,配置略有不同)

主机名

IP

CPU(核)

内存(GB)

系统盘(GB)

数据盘(GB)

用途

docker-node-1

192.168.9.81

4

16

40

100

Docker 节点1

docker-node-2

192.168.9.82

4

16

40

100

Docker 节点2

docker-node-3

192.168.9.83

4

16

40

100

Docker 节点3

合计

3

12

48

120

300

实战环境涉及软件版本信息

  • 操作系统:CentOS 7.9
  • Docker:24.0.7
  • Containerd:1.6.27

1. 操作系统基础配置

在安装配置 Docker 之前,我们需要做好操作系统的基础配置。

1.1 配置主机名

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 更改主机名
hostnamectl set-hostname docker-node-1

# 切入新的终端会话,验证主机名修改成功
bash

1.2 配置 DNS

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
echo "nameserver 114.114.114.114" > /etc/resolv.conf

1.3 配置服务器时区

配置服务器时区为 Asia/Shanghai

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
timedatectl set-timezone Asia/Shanghai

1.4 配置时间同步

  • 安装 chrony 作为时间同步软件。
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
yum install chrony -y
  • 修改配置文件 /etc/chrony.conf,修改 ntp 服务器配置。
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
vi /etc/chrony.conf

# 删除所有的 server 配置
server 0.centos.pool.ntp.org iburst
server 1.centos.pool.ntp.org iburst
server 2.centos.pool.ntp.org iburst
server 3.centos.pool.ntp.org iburst

# 增加国内的 ntp 服务器,或是指定其他常用的时间服务器
pool cn.pool.ntp.org iburst

# 可以使用 sed 自动替换生成
sed -i '/centos.pool.ntp.org/d' /etc/chrony.conf
sed -i "2a pool cn.pool.ntp.org iburst" /etc/chrony.conf
  • 重启并设置 chrony 服务开机自启动。
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
systemctl enable chronyd --now
  • 验证 chrony 同步状态。
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
chronyc sourcestats -v

1.5 关闭系统防火墙

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
systemctl stop firewalld && systemctl disable firewalld

1.6 禁用 SELinux

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 使用 sed 修改配置文件,实现彻底的禁用
sed -i 's/^SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config

# 使用命令,实现临时禁用,这一步其实不做也行,KubeKey 会自动配置
setenforce 0

2. 操作系统磁盘配置

服务器新增一块数据盘 /dev/sdb,用于 Docker 容器和镜像的持久化存储。

2.1 使用 LVM 配置磁盘

为了满足部分用户希望在生产上线后,磁盘容量不足时可以实现动态扩容。本文采用了 LVM 的方式配置磁盘(实际上,本人维护的生产环境,几乎不用 LVM)。

  • 创建 PV
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 pvcreate /dev/sdb
  • 创建 VG
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
vgcreate data /dev/sdb
  • 创建 LV
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 方案一、使用所有空间,VG 名字为 data,LV 名字为 lvdata
lvcreate -l 100%VG data -n lvdata

# 方案二、使用 100G 空间 
lvcreate -L 100G data -n lvdata

2.2 格式化磁盘

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
mkfs.xfs /dev/mapper/data-lvdata

2.3 磁盘挂载

  • 手工挂载
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
mkdir /data
mount /dev/mapper/data-lvdata /data/
  • 开机自动挂载
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
tail -1 /etc/mtab >> /etc/fstab

2.4 创建数据目录

  • 创建 Docker 数据目录
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
mkdir -p /data/docker

3. 安装配置 Docker

3.1 安装方式介绍

Docker 常见的安装方式有两种:

  • 操作系统发行版安装包(RPM、Deb,在线安装时常用的建议方式,本文选用
  • 二进制安装包(适用于离线部署、集成定制化部署)

采用操作系统发行版安装包方案时,也有两种方式可选:

  • 利用官方脚本,自动安装配置(适用于网络不受限的环境
  • 手动安装配置

本文选择了操作系统发行版 CentOS 7.9下使用 RPM 包手工安装部署的方案。

自动安装部署的方法,参考如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
export DOWNLOAD_URL="https://mirrors.tuna.tsinghua.edu.cn/docker-ce"
# 如您使用 curl
curl -fsSL https://get.docker.com/ | sh
# 如您使用 wget
wget -O- https://get.docker.com/ | sh

3.2 配置软件源

  • 下载 repo 配置文件
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
curl -fsSL https://download.docker.com/linux/centos/docker-ce.repo -o /etc/yum.repos.d/docker-ce.repo
  • 修改安装源为国内地址,适用于访问国外网络受限的环境
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sed -i 's#https://download.docker.com#https://mirrors.tuna.tsinghua.edu.cn/docker-ce#' /etc/yum.repos.d/docker-ce.repo

3.3 安装 Docker

使用 yum 安装 Docker 时,如果不指定版本,默认会安装当前最新版。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
yum install -y docker-ce docker-ce-cli containerd.io

说明:本文发布时,最新的版本号如下

  • containerd.io:1.6.27
  • docker-ce:25.0.0
  • docker-ce-cli:25.0.0

有特殊版本要求的场景,可以指定版本号安装。生产环境建议使用指定版本号。

  • 查询可用版本
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 yum --showduplicates list docker-ce
  • 查询结果如下
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@docker-node-1 ~]# yum --showduplicates list docker-ce
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: mirrors.huaweicloud.com
 * extras: mirrors.bfsu.edu.cn
 * updates: mirrors.bfsu.edu.cn
Available Packages
......(限于篇幅,有删减)
docker-ce.x86_64                               3:24.0.0-1.el7                                        docker-ce-stable
docker-ce.x86_64                               3:24.0.1-1.el7                                        docker-ce-stable
docker-ce.x86_64                               3:24.0.2-1.el7                                        docker-ce-stable
docker-ce.x86_64                               3:24.0.3-1.el7                                        docker-ce-stable
docker-ce.x86_64                               3:24.0.4-1.el7                                        docker-ce-stable
docker-ce.x86_64                               3:24.0.5-1.el7                                        docker-ce-stable
docker-ce.x86_64                               3:24.0.6-1.el7                                        docker-ce-stable
docker-ce.x86_64                               3:24.0.7-1.el7                                        docker-ce-stable
docker-ce.x86_64                               3:25.0.0-1.el7                                        docker-ce-stable
  • 安装指定版本
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
yum install docker-ce-24.0.7 -y

3.4 配置 Docker

自定义配置,修改 Docker 配置文件 /etc/docker/daemon.json

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
cat > /etc/docker/daemon.json << "EOF"
{
  "data-root": "/data/docker",
  "registry-mirrors": [
     "https://registry.hub.docker.com",
     "https://mirror.baidubce.com",
     "https://hub-mirror.c.163.com",
     "https://docker.mirrors.ustc.edu.cn"
  ],
  "log-opts": {
    "max-size": "10m",
    "max-file":"3"
  },
  "exec-opts": ["native.cgroupdriver=systemd"]
}

EOF

说明: 请根据实际情况配置下面的参数

  • data-root:数据目录
  • registry-mirrors:常用的 Registry 代理服务器
  • log-opts: Log 文件最容量设置为 50MB,默认是 10MB(一定要根据实际需求设置,过大过小都不合适,如不确定请使用默认值)
  • exec-opts: 配置了 cgroup driver 使用 systemd,适用于 Kubernetes 场景,Docker 默认使用 cgroupfs

3.5 启动 Docker

启动 Docker 服务,并设置开机自启。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
systemctl enable docker --now

3.6 验证 Docker

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 docker info

4. 自动化 Shell 脚本

5 分钟完成 Docker的安装配置,核心在此

全文所有的操作,我都整理成了自动化安装脚本:

  • 自动化脚本 deploy-docker.sh
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#!/bin/bash
# author:@运维有术
# Usage:自动安装 Docker 24.0.7
set -e

# 设置主机名,默认为 docker-node-1
hostname=${1:-"docker-node-1"}

# 设置 Docker 版本,默认为 24.0.7
docker_ver=${2:-"24.0.7"}

# 操作系统基础配置
function sys_init(){
	hostnamectl set-hostname ${hostname}
	echo "nameserver 114.114.114.114" > /etc/resolv.conf
	timedatectl set-timezone Asia/Shanghai
	yum install chrony -y
	sed -i '/centos.pool.ntp.org/d' /etc/chrony.conf
	sed -i "2a pool cn.pool.ntp.org iburst" /etc/chrony.conf
	systemctl enable chronyd --now
	chronyc sourcestats -v
	systemctl stop firewalld && systemctl disable firewalld
	sed -i 's/^SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
	setenforce 0
}

# 磁盘配置
function disk_init(){
	pvcreate /dev/sdb
	vgcreate data /dev/sdb
	lvcreate -l 100%VG data -n lvdata
	mkfs.xfs /dev/mapper/data-lvdata
	mkdir /data
	mount /dev/mapper/data-lvdata /data/
	tail -1 /etc/mtab >> /etc/fstab
}


# 安装配置 Docker
function docker_install(){
	mkdir -p /data/docker
	curl -fsSL https://download.docker.com/linux/centos/docker-ce.repo -o /etc/yum.repos.d//docker-ce.repo
	sed -i 's#https://download.docker.com#https://mirrors.tuna.tsinghua.edu.cn/docker-ce#' /etc/yum.repos.d/docker-ce.repo
	yum install docker-ce-${docker_ver} -y
	cat > /etc/docker/daemon.json <<- EOF
	{
  	"data-root": "/data/docker",
  		"registry-mirrors": [
  		"https://registry.hub.docker.com",
  		"https://mirror.baidubce.com",
    	"https://hub-mirror.c.163.com",
    	"https://docker.mirrors.ustc.edu.cn"
  	],
  	"log-opts": {
    	"max-size": "10m",
    	"max-file":"3"
  	},
  	"exec-opts": ["native.cgroupdriver=systemd"]
	}
	EOF

	# 重启验证
	systemctl enable docker --now
	docker info
}

sys_init
disk_init
docker_install
  • 使用方法
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 使用默认主机名和版本号
sh deploy-docker.sh

# 使用自定义主机名和版本号
sh deploy-docker.sh node-1 25.0.0

5. 总结

本文分享了 CentOS 7 下的 Docker 安装部署流程及注意事项。主要内容概括如下:

  • CentOS 7 初始化配置
  • 数据盘的配置和初始化
  • RPM 包方式的 Docker 安装部署
  • Docker 安装部署自动化脚本

Get 本文实战视频(请注意,文档视频异步发行,请先关注)

免责声明:

  • 笔者水平有限,尽管经过多次验证和检查,尽力确保内容的准确性,但仍可能存在疏漏之处。敬请业界专家大佬不吝指教。
  • 本文所述内容仅限于实战环境验证测试通过,读者可学习、借鉴,但严禁直接用于生产环境由此引发的任何问题,作者概不负责

结束语

如果你喜欢本文,请分享、收藏、点赞、评论! 请持续关注 @运维有术,及时收看更多好文!

欢迎加入 「运维有术·云原生实战训练营」 ,获取更多的 KubeSphere、Kubernetes、云原生运维实战技能。

版权声明

  • 所有内容均属于原创,感谢阅读、收藏,转载请联系授权,未经授权不得转载

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
【Kubernetes】10分钟部署一套K8S集群(kubeadm)
TIPS:需要在所有集群机器上执行的命令,可以用XSHELL的发送命令到所有会话,提高部署效率
Hanzo
2020/08/05
16.8K4
【Kubernetes】10分钟部署一套K8S集群(kubeadm)
centos7安装kubernetes教程
Kubernetes默认CRI(容器运行时)为Docker,因此先安装Docker。
gang_luo
2020/09/24
7.1K0
centos7安装kubernetes教程
使用kubeadm在腾讯云服务器上搭建kubernetes集群
操作系统 CentOS 7.6,服务器之前需要内部网络互通,服务器最好购买同一地域的同一类型。
用户7574875
2025/07/30
910
【Docker】Linux安装Docker(极简版)
建议使用centerOs 7.9 以上的版本,内核基本上可以满足Docker的需求。
阿东
2023/01/19
9620
K8s集群环境搭建
说明:现在需要安装kubernetes的集群环境,但是又不想过于麻烦,所有选择使用kubeadm方式
Alone-林
2022/11/22
1.8K0
K8s集群环境搭建
每天10分钟玩转Ceph(一)让Ceph集群运行起来
要学习使用Ceph,首先需要有一个Ceph集群,本文通过ceph-deploy一个自动化部署Ceph的工具部署一个Ceph集群,掌握Ceph集群部署的方法。
HappyLau谈云计算
2020/03/02
6.1K0
K8S集群安装
为了方便后面集群节点间的直接调用,在这配置一下主机名解析,企业中推荐使用内部DNS服务器
ha_lydms
2023/08/10
6450
K8S集群安装
10分钟搭建Kubernetes容器集群平台(kubeadm)
Minikube是一个工具,可以在本地快速运行一个单点的Kubernetes,尝试Kubernetes或日常开发的用户使用。不能用于生产环境。
星哥玩云
2022/07/28
4510
10分钟搭建Kubernetes容器集群平台(kubeadm)
①【Docker】Linux安装Docker容器教程
/var/run/yum.pid 已被锁定,PID 为 xxx 的另一个程序正在运行。 Another app is currently holding the yum lock; waiting for it to exit…
.29.
2024/03/16
5600
①【Docker】Linux安装Docker容器教程
KubeSphere 最佳实战:KubeKey 部署 Kubernetes v1.28.8 实战
今天分享的内容是 KubeSphere 最佳实战「2024」 系列文档中的 KubeKey 部署 Kubernetes v1.28.8 实战。
运维有术
2024/04/25
7290
KubeSphere 最佳实战:KubeKey 部署 Kubernetes v1.28.8 实战
手把手教你用两台CentOS 7.9服务器搭建Kubernetes 1.19集群(Master + Node架构,适合小白操作)
服务器要求:CentOS 7.9两台(Master配置建议2核4G+,Node 2核2G+)
IT咸鱼
2025/05/20
1881
手把手教你用两台CentOS 7.9服务器搭建Kubernetes 1.19集群(Master + Node架构,适合小白操作)
搭建OpenStack多节点的企业私有云平台——基础基础环境搭建
参考书籍:OpenStack云平台部署与高可用实战 前期准备: 安装VMware workstation 15.5 下载CentOS-7-x86_64-DVD-1611.iso centos7.3最小化安装完成 电脑硬件配置:推荐RAM16G以上,使用SSD固态盘运行 实验环境:
宝耶需努力
2022/12/13
4K0
搭建OpenStack多节点的企业私有云平台——基础基础环境搭建
(1 / 3)CentOS搭建K8s微服务20条
master01 192.168.0.66 zwinfo node01 192.168.0.67 zwinfo node02 192.168.0.68 zwinfo
老张的哲学
2023/01/09
6630
KubeSphere 最佳实战:Kubernetes 集群节点 openEuler 22.03 LTS SP3 系统初始化指南
今天分享的内容是 KubeSphere 最佳实战「2024」 系列文档中的 Kubernetes 集群节点 openEuler 22.03 LTS SP3 系统初始化指南。
运维有术
2024/05/16
3800
KubeSphere 最佳实战:Kubernetes 集群节点 openEuler 22.03 LTS SP3 系统初始化指南
使用 kubeadm 部署 kubernetes 1.13.1
最近有时间重新学习 k8s。k8s 的安装比之前简单了许多,本文介绍如何使用 kubeadm 部署 kubernetns 1.13.1
tanmx
2019/01/03
2.8K0
CentOS7.9 利用 KubeKey 扩容 Kubernetes v1.26 Worker 节点实战
上一期,我们实战讲解了使用 KubeKey v3.0.10 自动化部署 3 Master 和 1 Worker 的 Kubernetes 集群和 KubeSphere。
运维有术
2023/08/25
4120
CentOS7.9 利用 KubeKey 扩容 Kubernetes v1.26 Worker 节点实战
容器实战|手把手带你部署Ceph集群
部署Ceph之前我们需要对自身机器的环境做初始化。主要涉及到防火墙,主机名等设置。
灵雀云
2021/11/25
5.2K0
容器实战|手把手带你部署Ceph集群
基于 KubeSphere 玩转 k8s 第二季|KubeKey 扩容 Kubernetes Worker 节点实战
上一期,我们实战讲解了使用 KubeSphere 开发的 KubeKey 工具自动化部署 3 Master 和 1 Worker 的 Kubernetes 集群和 KubeSphere。
运维有术
2023/07/16
5880
CentOS 7.9 安装 KubeSphere v3.4.0 和 Kubernetes v1.26 实战
本文基于操作系统 CentOS 7.9 ,使用 KubeSphere 开发的 KubeKey v3.0.10 工具,模拟真实的小规模生产环境在 6 台服务器上采用高可用模式部署 Kubernetes v1.26 集群和 KubeSphere v3.4.0。
运维有术
2023/08/23
2.3K1
CentOS 7.9 安装 KubeSphere v3.4.0 和 Kubernetes v1.26 实战
Docker安装部署教程
Docker是一个开源的应用容器引擎,基于Go语言并遵从Apache2.0协议开源。Docker 可以让开发者打包他们的应用以及依赖包到一个轻星级、可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口(类似iPhone的app),更重要的是容器性能开销极低。
Power
2025/03/03
4340
推荐阅读
相关推荐
【Kubernetes】10分钟部署一套K8S集群(kubeadm)
更多 >
交个朋友
加入HAI高性能应用服务器交流群
探索HAI应用新境界 共享实践心得
加入[游戏服务器] 腾讯云官方交流站
游戏服运维小技巧 常见问题齐排查
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验