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 |
实战环境涉及软件版本信息
在安装配置 Docker 之前,我们需要做好操作系统的基础配置。
# 更改主机名
hostnamectl set-hostname docker-node-1
# 切入新的终端会话,验证主机名修改成功
bash
echo "nameserver 114.114.114.114" > /etc/resolv.conf
配置服务器时区为 Asia/Shanghai。
timedatectl set-timezone Asia/Shanghai
yum install chrony -y
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
systemctl enable chronyd --now
chronyc sourcestats -v
systemctl stop firewalld && systemctl disable firewalld
# 使用 sed 修改配置文件,实现彻底的禁用
sed -i 's/^SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
# 使用命令,实现临时禁用,这一步其实不做也行,KubeKey 会自动配置
setenforce 0
服务器新增一块数据盘 /dev/sdb,用于 Docker 容器和镜像的持久化存储。
为了满足部分用户希望在生产上线后,磁盘容量不足时可以实现动态扩容。本文采用了 LVM 的方式配置磁盘(实际上,本人维护的生产环境,几乎不用 LVM)。
pvcreate /dev/sdb
vgcreate data /dev/sdb
# 方案一、使用所有空间,VG 名字为 data,LV 名字为 lvdata
lvcreate -l 100%VG data -n lvdata
# 方案二、使用 100G 空间
lvcreate -L 100G data -n lvdata
mkfs.xfs /dev/mapper/data-lvdata
mkdir /data
mount /dev/mapper/data-lvdata /data/
tail -1 /etc/mtab >> /etc/fstab
mkdir -p /data/docker
Docker 常见的安装方式有两种:
采用操作系统发行版安装包方案时,也有两种方式可选:
本文选择了操作系统发行版 CentOS 7.9下使用 RPM 包手工安装部署的方案。
自动安装部署的方法,参考如下:
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
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 安装 Docker 时,如果不指定版本,默认会安装当前最新版。
yum install -y docker-ce docker-ce-cli containerd.io
说明:本文发布时,最新的版本号如下
有特殊版本要求的场景,可以指定版本号安装。生产环境建议使用指定版本号。
yum --showduplicates list docker-ce
[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
yum install docker-ce-24.0.7 -y
自定义配置,修改 Docker 配置文件 /etc/docker/daemon.json
。
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
说明: 请根据实际情况配置下面的参数
启动 Docker 服务,并设置开机自启。
systemctl enable docker --now
docker info
5 分钟完成 Docker的安装配置,核心在此!
全文所有的操作,我都整理成了自动化安装脚本:
deploy-docker.sh
#!/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
# 使用默认主机名和版本号
sh deploy-docker.sh
# 使用自定义主机名和版本号
sh deploy-docker.sh node-1 25.0.0
本文分享了 CentOS 7 下的 Docker 安装部署流程及注意事项。主要内容概括如下:
Get 本文实战视频(请注意,文档视频异步发行,请先关注)
免责声明:
如果你喜欢本文,请分享、收藏、点赞、评论! 请持续关注 @运维有术,及时收看更多好文!
欢迎加入 「运维有术·云原生实战训练营」 ,获取更多的 KubeSphere、Kubernetes、云原生运维实战技能。
版权声明
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。