Jenkins 安装完成后,需要继续配置 Docker 环境,才能进行 Docker 镜像的构建。

Docker 简介

官方网站:https://www.docker.com/
官方文档:https://docs.docker.com/install/
GitHub :https://github.com/docker/docker-ce

1、什么是 Docker ?

Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。

  • Docker社区版(CE):为了开发人员或小团队创建基于容器的应用,与团队成员分享和自动化的开发管道。docker-ce提供了简单的安装和快速的安装,以便可以立即开始开发。docker-ce集成和优化,基础设施。(免费)

  • Docker企业版(EE):专为企业的发展和IT团队建立谁。docker-ee为企业提供最安全的容器平台,以应用为中心的平台。(付费)

2、Docker 概念

Docker是开发人员和系统管理员 使用容器开发,部署和运行应用程序的平台。使用Linux容器部署应用程序称为容器化。容器不是新的,但它们用于轻松部署应用程序。

容器化越来越受欢迎,因为容器是:

  • 灵活:即使是最复杂的应用也可以集装箱化。
  • 轻量级:容器利用并共享主机内核。
  • 可互换:您可以即时部署更新和升级。
  • 便携式:您可以在本地构建,部署到云,并在任何地方运行。
  • 可扩展:您可以增加并自动分发容器副本。
  • 可堆叠:您可以垂直和即时堆叠服务。

Docker 安装

官方安装指南: https://docs.docker.com/install/linux/docker-ce/centos/

1、建立 docker 用户组

默认情况下,docker 命令会使用 Unix socket 与 Docker 引擎通讯。而只有 root 用户和 docker 组的用户才可以访问 Docker 引擎的 Unix socket。出于安全考虑,一般 Linux 系统上不会直接使用 root 用户。因此,更好地做法是将需要使用 docker 的用户加入 docker 用户组。

# 定义用户名
[root@docker]# NEW_USER=docker
# 添加用户(可选)
[root@docker]# sudo adduser $NEW_USER
# 为新用户设置密码
[root@docker]# sudo passwd $NEW_USER
# 为新用户添加sudo权限
[root@docker]# sudo echo "$NEW_USER ALL=(ALL) ALL" >> /etc/sudoers

#建立 docker 组
[root@docker]# sudo groupadd docker
# 把当前用户加入docker组
[root@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: 安装必要的一些系统工具
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

Docker-Engine Docker官方已经不推荐使用,请安装Docker-CE。

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
{
    "registry-mirrors": ["https://7bezldxe.mirror.aliyuncs.com","http://f1361db2.m.daocloud.io"],
    "insecure-registries": ["192.168.1.111"],
    "max-concurrent-downloads": 3,
    "max-concurrent-uploads": 5,
    "storage-driver": "overlay2",
    "storage-opts": ["overlay2.override_kernel_check=true"],
    "log-driver": "json-file",
    "log-opts": {
        "max-size": "100m",
        "max-file": "3"
    }
}

重启 docker

systemctl daemon-reload
systemctl restart docker

Docker 插件

1、插件安装

2、插件全局配置

进入 Jenkins -> Global Tool Configuration 下

  • 设置别名,如: docker-19.03.5
  • 指定安装目录,如:/var/lib/docker

参考文档

作者:Jeebiz  创建时间:2019-08-26 00:29
 更新时间:2023-12-28 09:15