三、服务安装

官方安装指南: 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,
  "oom-score-adjust": -1000,
  "max-concurrent-downloads": 10,
  "max-concurrent-uploads": 10,
  "storage-driver": "overlay2",
  "storage-opts": ["overlay2.override_kernel_check=true"],
  "exec-opts": ["native.cgroupdriver=systemd"],
  "registry-mirrors": [
    "https://docker.mirrors.ustc.edu.cn",
    "https://mirrors.zju.edu.cn"
  ]
}
EOF

重启 docker

systemctl daemon-reload
systemctl restart docker

参考文档

作者:Jeebiz  创建时间:2023-02-12 01:37
最后编辑:Jeebiz  更新时间:2024-08-02 14:21