三、服务安装
官方安装指南: https://docs.docker.com/desktop/install/linux-install
1、建立 docker 用户组
默认情况下,docker 命令会使用 Unix socket 与 Docker 引擎通讯。而只有 root 用户和 docker 组的用户才可以访问 Docker 引擎的 Unix socket。出于安全考虑,一般 Linux 系统上不会直接使用 root 用户。因此,更好地做法是将需要使用 docker 的用户加入 docker 用户组。
# 定义用户名
NEW_USER=docker
# 添加用户(可选)
sudo adduser $NEW_USER
# 为新用户设置密码
sudo passwd $NEW_USER
# 为新用户添加sudo权限
sudo echo "$NEW_USER ALL=(ALL) ALL" >> /etc/sudoers
#建立 docker 组
sudo groupadd docker
# 把当前用户加入docker组
sudo usermod -aG docker $NEW_USER;
2、安装 Docker CE
Docker CE 支持 64 位版本 CentOS 7,并且要求内核版本不低于 3.10。 CentOS 7 满足最低内核的要求,但由于内核版本比较低,部分功能(如 overlay2 存储层驱动)无法使用,并且部分功能可能不太稳定。
最新版本:
# step 1: 卸载旧版本Docker软件
# 旧版本的 Docker 称为 docker 或者 docker-engine。为防止版本冲突,安装前使用以下命令卸载旧版本以及相关的依赖项:
sudo yum -y remove docker \
docker-ce-cli \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-selinux \
docker-engine-selinux \
docker-engine \
containerd
# step 2: 安装必要的一些系统工具
# yum-utils 提供了yum-config-manager 效用,并device-mapper-persistent-data和lvm2由需要 devicemapper 存储驱动程序
sudo yum install -y yum-utils device-mapper-persistent-data lvm2 bash-completion
# Step 3: 添加软件源信息(根据主机所在网络情况选择下面的yum源)
# 阿里云yum源(推荐)
sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# 官方yum源
# sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
# 注意:如果需要最新版本的 Docker CE,可以开启测试版本的list:
# sudo yum-config-manager --enable docker-ce-edge
# sudo yum-config-manager --enable docker-ce-test
# Step 4: 更新并安装 Docker-CE(根据情况选择最新版本还是指定版本)
sudo yum makecache -y
#查看可用版本的 Docker-ce
yum list docker-ce --showduplicates | sort -r
# 安装最新版本
sudo yum install -y docker-ce docker-ce-cli docker-ce-selinux containerd.io
# 设置开机启动
sudo systemctl enable docker
sudo systemctl start docker
# 检查 docker 版本
docker version
指定版本(集群环境一般要求特定版本):
# step 1: 卸载旧版本Docker软件
# 旧版本的 Docker 称为 docker 或者 docker-engine。为防止版本冲突,安装前使用以下命令卸载旧版本以及相关的依赖项:
sudo yum -y remove docker \
docker-ce-cli \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-selinux \
docker-engine-selinux \
docker-engine
containerd.io
# step 2: 安装必要的一些系统工具
sudo yum install -y yum-utils device-mapper-persistent-data lvm2 bash-completion
# Step 3: 添加软件源信息(根据主机所在网络情况选择下面的yum源)
# 阿里云yum源(推荐)
sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# 官方yum源
# sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
# 注意:如果需要最新版本的 Docker CE,可以开启测试版本的list:
# sudo yum-config-manager --enable docker-ce-edge
# sudo yum-config-manager --enable docker-ce-test
# Step 4: 更新并安装 Docker-CE(根据情况选择最新版本还是指定版本)
sudo yum makecache all
#查看可用版本的 Docker-ce
yum list docker-ce --showduplicates | sort -r
# 安装指定版本(集群需要根据环境支持情况进行选择)
export docker_version=18.06.3
version=$(yum list docker-ce.x86_64 --showduplicates | sort -r|grep ${docker_version}|awk '{print $2}');
sudo yum -y install --setopt=obsoletes=0 docker-ce-${version}
# 设置开机启动
sudo systemctl enable docker
sudo systemctl start docker
# 检查 docker 版本
docker version
Requires: container-selinux >= 2.9
# 下载container-selinux的RPM包
# 需要注意:由于系统版本的原因,我的主机选择container-selinux-2.68-1.el7.noarch.rpm这个版本才能顺利解决问题。(rhel 7.5)
wget http://mirror.centos.org/centos/7/extras/x86_64/Packages/container-selinux-2.107-3.el7.noarch.rpm
# 通过RPM包安装container-selinux:
rpm -ivh container-selinux-2.107-3.el7.noarch.rpm
解决:
setenforce: SELinux is disabled
vi /etc/selinux/config
更改为:SELINUX=1
必须重启linux,不重启是没办法立刻开启selinux的
版本降级(可选)
# 降级到指定版本(集群需要根据环境支持情况进行选择)
export docker_version=18.09.9
version=$(yum list docker-ce.x86_64 --showduplicates | sort -r|grep ${docker_version}|awk '{print $2}')
# 如果已经安装高版本Docker,可进行降级安装(可选)
yum downgrade --setopt=obsoletes=0 -y docker-ce-${version} docker-ce-selinux-${version}
Docker-Engine Docker官方已经不推荐使用,请安装Docker-CE。
https://download.docker.com/linux/static/stable/x86_64/
3、Docker 配置
对于通过systemd来管理服务的系统(比如CentOS7.X、Ubuntu16.X), Docker有两处可以配置参数: 一个是docker.service服务配置文件,一个是Docker daemon配置文件daemon.json。
1、docker.service
对于CentOS系统,docker.service 默认位于
/usr/lib/systemd/system/docker.service
;对于Ubuntu系统,docker.service默认位于/lib/systemd/system/docker.service
2、daemon.json
daemon.json默认位于
/etc/docker/daemon.json
,如果没有可手动创建,基于systemd管理的系统都是相同的路径。通过修改daemon.json
来改过Docker配置,也是Docker官方推荐的方法。
以下说明均基于systemd,并通过
/etc/docker/daemon.json
来修改配置。
3.1、配置镜像下载和上传并发数
鉴于国内网络问题,后续拉取 Docker 镜像十分缓慢,强烈建议安装 Docker 之后配置 国内镜像加速。
从Docker1.12开始,支持自定义下载和上传镜像的并发数,默认值上传为3个并发,下载为5个并发。通过添加”max-concurrent-downloads”和”max-concurrent-uploads”参数对其修改:
"max-concurrent-downloads": 3,
"max-concurrent-uploads": 5
3.2、配置镜像加速地址
Rancher从v1.6.15开始到v2.x.x,Rancher系统相关的所有镜像(包括1.6.x上的K8S镜像)都托管在Dockerhub仓库。Dockerhub节点在国外,国内直接拉取镜像会有些缓慢。为了加速镜像的下载,可以给Docker配置国内的镜像地址。
编辑/etc/docker/daemon.json
加入以下内容
{
"registry-mirrors": ["https://7bezldxe.mirror.aliyuncs.com/","https://IP:PORT/"]
}
可以设置多个registry-mirrors地址,以数组形式书写,地址需要添加协议头(https或者http)。
3.3、配置insecure-registries私有仓库
Docker默认只信任TLS加密的仓库地址(https),所有非https仓库默认无法登陆也无法拉取镜像。insecure-registries字面意思为不安全的仓库,通过添加这个参数对非https仓库进行授信。可以设置多个insecure-registries地址,以数组形式书写,地址不能添加协议头(http)。
编辑/etc/docker/daemon.json
加入以下内容:
{
"insecure-registries": ["192.168.1.100","IP:PORT"]
}
3.4、配置Docker存储驱动
OverlayFS是一个新一代的联合文件系统,类似于AUFS,但速度更快,实现更简单。Docker为OverlayFS
提供了两个存储驱动程序:旧版的overlay
,新版的overlay2
(更稳定)。
编辑/etc/docker/daemon.json
加入以下内容
{
"storage-driver": "overlay2",
"storage-opts": ["overlay2.override_kernel_check=true"]
}
3.5、配置日志驱动
容器在运行时会产生大量日志文件,很容易占满磁盘空间。通过配置日志驱动来限制文件大小与文件的数量。 >限制单个日志文件为100M,最多产生3个日志文件
{
"log-driver": "json-file",
"log-opts": {
"max-size": "100m",
"max-file": "3"
}
}
文件 /etc/docker/daemon.json 综合配置示例:
vi /etc/docker/daemon.json
cat << EOF > /etc/docker/daemon.json
{
"data-root": "/var/lib/docker",
"log-driver": "json-file",
"log-opts": {
"max-size": "200m",
"max-file": "5"
},
"default-ulimits": {
"nofile": {
"Name": "nofile",
"Hard": 655360,
"Soft": 655360
},
"nproc": {
"Name": "nproc",
"Hard": 655360,
"Soft": 655360
}
},
"live-restore": true,
"max-concurrent-downloads": 10,
"max-concurrent-uploads": 10,
"storage-driver": "overlay2",
"exec-opts": ["native.cgroupdriver=systemd"],
"registry-mirrors": [
"https://docker.1panelproxy.com",
"https://docker.1panel.live"
]
}
EOF
重启 docker
systemctl daemon-reload
systemctl restart docker
参考文档
最后编辑:Jeebiz 更新时间:2024-11-27 12:52