Jenkins 基础篇 - 环境准备

前期准备

为了开发这套课程,我专门购买了一台二手戴尔服务器 Dell R720,同时把废弃多年的笔记本电脑也利用了起来。当然如果自己没有多余的电脑,也可以在自己电脑上安装 Vmware Workstation,然后再安装虚拟的方式来实现有几台虚拟服务器。如果自己有多余的旧电脑,并且是2个核心8G以上内存,可以尝试安装 VMware vSphere Hypervisor (ESXi) 的方式来管理虚拟机。
Vmware Workstation 或者 VMware vSphere Hypervisor (ESXi) 软件的下载参考如下连接,需要注意的是目前在 Vmware 站点下载软件需要注册一个账号。注册账号后在产品下载里面可以找到所有产品的下载,也就是这个连接 https://my.vmware.com/cn/group/vmware/downloads/#all_products ,自行选择下载 Vmware Workstation 或者 VMware vSphere Hypervisor (ESXi) 。
Jenkins 基础篇 - 环境准备
另外像戴尔或者联想服务器会针对 VMware vSphere Hypervisor (ESXi)  做一些定制化,可以从戴尔或者联想官网下载 VMware vSphere Hypervisor (ESXi) ,例如这里是戴尔的定制 VMware vSphere Hypervisor (ESXi)  下载页面 https://www.dell.com/support/home/zh-cn/product-support/product/poweredge-r720/drivers ,操作系统选择 VMware ESXi 6.5,格式选择 CD-ROM的ISO映像。
Jenkins 基础篇 - 环境准备

安装 Vmware ESXi

如果自己有多余的旧电脑,并且是2个核心8G以上内存,可以尝试安装 Vmware ESXi 的方式来管理虚拟机。接下来我这里将演示如何安装部署 Vmware ESXi,以及如何通过 Vmware ESXi 创建虚拟机。
首先需要制作一个U盘启动器,需要一个4G及以上的U盘,还需要 UltraISO 软碟通以及前面下载的 Vmware ESXi 软件。将U盘插到电脑上,确保自己U盘上的东西有备份,因为制作启动器会格式化U盘。然后打开 UltraISO 软碟通。
点击左上角【文件】选项里面的【打开】,打开我们下载的 VMware-VMvisor-Installer-7.0U1-16850804.x86_64.iso,打开后如下图所示:
Jenkins 基础篇 - 环境准备
然后再点击【启动】选项里的【写入硬盘映像…】

Jenkins 基础篇 - 环境准备
在新的弹窗里面一定要注意【硬盘驱动器】要选择自己的U盘,其他设置默认即可。然后点击【写入】,等待进度条完成即可,一个U盘启动器就制作好了。Jenkins 基础篇 - 环境准备
接下来就开始安装 Vmware ESXi,和U盘启动器安装操作系统的方式一样,我这里为了方便演示和截图就通过虚拟机的方式来演示 Vmware ESXi 的安装。
将U盘启动器插在要安装 Vmware ESXi 的电脑上,然后开机进入 BIOS 系统设置第一启动项,不同电脑略有差异,请自行度娘解决。需要注意的是安装 Vmware ESXi,就相当于安装了新的系统,自己电脑上重要的东西记得备份。我这里演示安装 Vmware ESXi 用的是 6.5.0 版本,与 Vmware ESXi 7.0 的使用没什么差异。
启动电脑后是在加载我们U盘启动器的内容:
Jenkins 基础篇 - 环境准备
开始安装 Vmware ESXi,敲【Enter】键继续:
Jenkins 基础篇 - 环境准备
同意用户许可协议,【F11】接受并继续:
Jenkins 基础篇 - 环境准备
选择将 Vmware ESXi 安装在哪个磁盘,如果有多块磁盘,按上下键选择磁盘,我这里就只有一块磁盘,敲【Enter】键继续:
Jenkins 基础篇 - 环境准备
设置键盘布局,选择默认的【US Default】即可,敲【Enter】键继续:
Jenkins 基础篇 - 环境准备
设置超级管理员 root 账号的密码,确保两次输入的密码一致,敲【Enter】键继续:
Jenkins 基础篇 - 环境准备
因为我是在虚拟机里面安装的,这里提示硬件虚拟化没有启用,需要在 BIOS 里面启用硬件虚拟化特性,这里只是出于演示目的,先不用管它,敲【Enter】键继续:
Jenkins 基础篇 - 环境准备
警告提醒磁盘将被重新分区,敲【F11】开始真正的安装进程:
Jenkins 基础篇 - 环境准备
接下来就是安装的进度条,等待进度达到100%,Vmware ESXi 安装就完成了:
Jenkins 基础篇 - 环境准备
安装完成,重启电脑,拔出U盘启动器。
Jenkins 基础篇 - 环境准备
提示服务器将会重启:
Jenkins 基础篇 - 环境准备
重启完成后就是如下界面,这台服务器的 IP 就是 192.168.21.227。需要特别提醒的是 Vmware ESXi 不是像操作系统那样的桌面管理界面,它的管理界面是 Web 平台的,需要在浏览器里面访问。
Jenkins 基础篇 - 环境准备
好了,现在我们在其他桌面环境的电脑端,打开浏览器,输入Vmware ESXi 服务器的 IP 地址进行访问。初次访问浏览器会警告这个站点的SSL证书是不可信的,不用管它,继续访问即可,在登录界面输入 root 账号和密码。
Jenkins 基础篇 - 环境准备
首次进入管理界面,提示加入 Vmware 客户体验改进计划,【确定】即可。初次安装官方版的 Vmware ESXi 会有60天的试用期,如果有正版的激活序列号,在【管理】菜单里面的【许可】中输入密钥激活即可。
Jenkins 基础篇 - 环境准备
界面大概就是这样,有进行实操的同学可以熟悉下 Vmware ESXi 的其他功能选项。
Jenkins 基础篇 - 环境准备

安装 Vmware Workstation

Jenkins 基础篇 - 环境准备

Jenkins 基础篇 - 环境准备

Jenkins 基础篇 - 环境准备

Jenkins 基础篇 - 环境准备

Jenkins 基础篇 - 环境准备

Jenkins 基础篇 - 环境准备

Jenkins 基础篇 - 环境准备

Jenkins 基础篇 - 环境准备

Jenkins 基础篇 - 环境准备

Jenkins 基础篇 - 环境准备

相关资源下载:

  1. Vmware 相关软件:https://my.vmware.com/cn/group/vmware/downloads/#all_products

服务器规划

准备4个虚拟机服务器

名称 IP 用途 账号
centos7-200 192.168.31.200 安装部署Jenkins服务 root、jenkins、maintainer
centos7-110 192.168.31.110 1、作为jenkins的节点;2、部署开发环境服务 root、jenkins、maintainer
centos7-111 192.168.31.111 1、作为jenkins的节点;2、部署测试环境服务 root、jenkins、maintainer
centos7-112 192.168.31.112 1、作为jenkins的节点;2、部署正式环境服务 root、jenkins、maintainer

服务器安装

接下来还是分别演示采用 Vmware ESXi 和 Vmware Workstation 安装虚拟机。

Vmware ESXi 安装虚拟机

进入 Vmware ESXi 的 Web 关键界面,开始创建我们的 CentOS7 虚拟机:
Jenkins 基础篇 - 环境准备
创建类型选择【创建新虚拟机】:

Jenkins 基础篇 - 环境准备
在该界面设置虚拟机名称、兼容性、操作系统类型和操作系统的版本,这里需要注意一点,因为我安装的 Vmware ESXi 是新版的 7.0 版本,以防万一新版的 Vmware ESXi 在使用过程中有什么问题,所以在兼容性这里我们可以做个调整,你可以选择其他版本的 Vmware ESXi,也可以选择 Vmware Workstation 兼容的类型,这样以便我们创建的虚拟机可以在其他版本的 Vmware ESXi 或者在 Vmware Workstation 中注册运行。Jenkins 基础篇 - 环境准备
Jenkins 基础篇 - 环境准备
这里的【选择存储】是设置我们虚拟机的存储位置,因为我这里只有一个 datastore1 存储空间,所有默认就行,如果你自己挂载了多个存储空间,选择自己想要存储的位置即可。Jenkins 基础篇 - 环境准备
这个界面是设置虚拟机的 CPU、内存、硬盘、网络适配器、驱动器等,CPU、内存、硬盘大小可以根据自己需要做适当调整,但是不能超过物理机的最大值。这里需要注意的有两个地方,一是【网络适配器】,因为目前大多数服务器是多网口的,我的 Dell R720 后面就有4个网口,如果这些网口都利用起来可以有效地避免网络不可用的问题,例如我一个网口用电信的网络,一个网口用移动的网络,当我移动网络不可用时可以继续使用电信网络。我这里只用了一个网口,采用默认设置就行了,如果你的多个网口都利用起来了的话,可以也给这个虚拟机设置多个网络。另一个注意点就是【CD/DVD驱动器】,一定要选择【数据存储 ISO 文件】来挂载我们的系统镜像文件,同时记得把【连接】勾选上。
Jenkins 基础篇 - 环境准备
这里是选择我们的系统镜像文件,你想安装什么系统并且你也有对应的系统镜像文件的话,都可以尝试下,体验下不同的操作系统。Vmware ESXi 具体支持虚拟化哪些系统,可以到 Vmware 官网看看,这里有个 Vmware ESXi 的兼容系统矩阵可以参考下 https://www.vmware.com/resources/compatibility/search.php?deviceCategory=software&testConfig=16
Jenkins 基础篇 - 环境准备
这个界面是虚拟机配置的一个概览,需要调整就进入【上一页】重新设置,不需要调整直接【完成】。
Jenkins 基础篇 - 环境准备
然后就可以点击我们刚才创建好的虚拟机,【打开电源】启动虚拟机了,虚拟机启动后初次进入就是进行操作系统的安装。
Jenkins 基础篇 - 环境准备
后面就是在小窗口进行操作系统安装阶段的系统设置,演示过一遍。
设置系统语言:
Jenkins 基础篇 - 环境准备
这个界面有以下几个地方需要设置:【软件选择】、【安装位置】、【网络和主机名】
Jenkins 基础篇 - 环境准备
我们这里是作为服务器使用,选择【最小安装】即可,如果是当作桌面系统使用需要选择【GNOME 桌面】。
Jenkins 基础篇 - 环境准备
系统安装位置,可以自己分区,也可以自动配置,如果不知道怎样分区好就默认自动分区就行了。
Jenkins 基础篇 - 环境准备
网络和主机名设置,填好主机名后要点击下【应用】才会生效,然后还要开启以太网,开启后路由器会自动分配 IP 地址,如果需要设置特定 IP 地址,可以在【配置】中进行设置,设置的时候需要填写网关 IP、和子网掩码之类东西,为了一切简单,不做特殊设置,只是开启以太网就行了。
Jenkins 基础篇 - 环境准备
Jenkins 基础篇 - 环境准备
后面就开始真正的安装过程了,安装过程中还需要进行用户设置,必须要做的是要为 root 账号设置密码,也可以创建一个新用户。
Jenkins 基础篇 - 环境准备
Jenkins 基础篇 - 环境准备
等待安装完成后需要重启虚拟机,等待虚拟机启动好后既可以登录了。
Jenkins 基础篇 - 环境准备
Jenkins 基础篇 - 环境准备
Jenkins 基础篇 - 环境准备

Vmware Workstation 安装虚拟机

在 Vmware Workstation 中创建虚拟机就笔记简单些,对大家来讲也应该比较熟悉,也还是简单过一下。另外 Vmware Workstation 还可以连接远程服务器,例如可以连接我的 Dell R720 服务器,然后管理服务器上的现有虚拟机或者在服务器上创建新的虚拟机。
Jenkins 基础篇 - 环境准备
Jenkins 基础篇 - 环境准备
关于 Vmware Workstation 管理 Vmware ESXi 服务器,有条件的同学可以自行下去试试各个功能按钮。我这里演示的是利用 Vmware Workstation 在自己电脑上创建虚拟机,不是在远程服务器上创建虚拟机。
开始创建新的虚拟机:
Jenkins 基础篇 - 环境准备
选择【典型】,这个方式要设置的内容少些。
Jenkins 基础篇 - 环境准备
这里是设置系统镜像文件。
Jenkins 基础篇 - 环境准备
设置虚拟机的名称和存储位置。
Jenkins 基础篇 - 环境准备
设置虚拟机硬盘大小。
Jenkins 基础篇 - 环境准备
还可以【自定义硬件】,调整虚拟机的 CPU、内存等。点击完成就开始安装虚拟机操作系统了,和前面安装 CentOS7 系统一样。
Jenkins 基础篇 - 环境准备
Jenkins 基础篇 - 环境准备

不管是采用 Vmware ESXi 还是 Vmware Workstation 安装虚拟机,整个过程都做了一个演示,后面可以自行按照相应的方式将规划的其他几台虚拟机也安装好。
我这里规划的几台虚拟机都计划安装在 Dell R720 服务器上,目前都已经安装好了,如果是安装在自己使用的电脑上,如果电脑内存没有8G以上,并且 CPU 也比较差的话,在使用过程中感觉自己电脑会有很卡。如果自己有旧电脑、或者公司有服务器资源的可以尝试利用其他的计算机资源。

由于我是购买的二手服务器,外观上七八成的成色,内部就懒得拆机进行查看了。测试下磁盘读写速度,感觉还不错,至少读写性能还是杠杠的。

# 测试文件写入速度
# if=/dev/zero不产生IO,因此可以用来测试纯写速度
# 写入文件大小 = 8k * 500000 = 4G
$ time dd if=/dev/zero of=/home/$USER/out bs=8k oflag=direct count=500000

# 测试文件读取速度
# of=/dev/null不产生IO,可以用来测试纯读速度
$ time dd if=/home/$USER/out of=/dev/null bs=8k

我这里的执行出来的结果如下:

$ time dd if=/dev/zero of=/home/$USER/out bs=8k oflag=direct count=500000
记录了500000+0 的读入
记录了500000+0 的写出
4096000000字节(4.1 GB)已复制,49.9355 秒,82.0 MB/秒

real	0m49.969s
user	0m0.751s
sys	0m17.562s


$ time dd if=/home/$USER/out of=/dev/null bs=8k
记录了500000+0 的读入
记录了500000+0 的写出
4096000000字节(4.1 GB)已复制,17.9543 秒,228 MB/秒

real	0m17.956s
user	0m0.354s
sys	0m7.236s

Docker 安装

# 卸载旧版docker或者docker-engine
$ sudo yum remove docker \
    docker-client \
    docker-client-latest \
    docker-common \
    docker-latest \
    docker-latest-logrotate \
    docker-logrotate \
    docker-engine

# 有必要删除docker目录, 包括images, containers, volumes, and networks
$ sudo rm -rf /var/lib/docker/

# 先安装一些需要的工具
$ sudo yum install -y wget curl net-tools lsof yum-utils bash-completion telnet

# 采用官方docker源安装
$ sudo yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo

# 安装最新docker和docker-engine, 注意检查指纹密钥:060A 61C5 1B55 8A7F 742B 77AA C52F EB6B 621E 9F35
$ sudo yum install docker-ce docker-ce-cli containerd.io

# 如果想安装其他版本的Docker,替换<VERSION_STRING>为指定的版本即可。
$ sudo yum install docker-ce-<VERSION_STRING> docker-ce-cli-<VERSION_STRING> containerd.io

# 查看目前有哪些版本的Docker
$ yum list docker-ce --showduplicates | sort -r
已加载插件:fastestmirror
可安装的软件包
 * updates: mirrors.ustc.edu.cn
 * extras: mirrors.aliyun.com
docker-ce.x86_64            3:20.10.1-3.el7                     docker-ce-stable
docker-ce.x86_64            3:20.10.0-3.el7                     docker-ce-stable
docker-ce.x86_64            3:19.03.9-3.el7                     docker-ce-stable
docker-ce.x86_64            3:19.03.8-3.el7                     docker-ce-stable
docker-ce.x86_64            3:19.03.7-3.el7                     docker-ce-stable
docker-ce.x86_64            3:19.03.6-3.el7                     docker-ce-stable
docker-ce.x86_64            3:19.03.5-3.el7                     docker-ce-stable
docker-ce.x86_64            3:19.03.4-3.el7                     docker-ce-stable
docker-ce.x86_64            3:19.03.3-3.el7                     docker-ce-stable
docker-ce.x86_64            3:19.03.2-3.el7                     docker-ce-stable
docker-ce.x86_64            3:19.03.14-3.el7                    docker-ce-stable
docker-ce.x86_64            3:19.03.1-3.el7                     docker-ce-stable
docker-ce.x86_64            3:19.03.13-3.el7                    docker-ce-stable
docker-ce.x86_64            3:19.03.12-3.el7                    docker-ce-stable
docker-ce.x86_64            3:19.03.11-3.el7                    docker-ce-stable
docker-ce.x86_64            3:19.03.10-3.el7                    docker-ce-stable
docker-ce.x86_64            3:19.03.0-3.el7                     docker-ce-stable
docker-ce.x86_64            3:18.09.9-3.el7                     docker-ce-stable
docker-ce.x86_64            3:18.09.8-3.el7                     docker-ce-stable
docker-ce.x86_64            3:18.09.7-3.el7                     docker-ce-stable
docker-ce.x86_64            3:18.09.6-3.el7                     docker-ce-stable
docker-ce.x86_64            3:18.09.5-3.el7                     docker-ce-stable
docker-ce.x86_64            3:18.09.4-3.el7                     docker-ce-stable
docker-ce.x86_64            3:18.09.3-3.el7                     docker-ce-stable
docker-ce.x86_64            3:18.09.2-3.el7                     docker-ce-stable
docker-ce.x86_64            3:18.09.1-3.el7                     docker-ce-stable
docker-ce.x86_64            3:18.09.0-3.el7                     docker-ce-stable
docker-ce.x86_64            18.06.3.ce-3.el7                    docker-ce-stable
docker-ce.x86_64            18.06.2.ce-3.el7                    docker-ce-stable
docker-ce.x86_64            18.06.1.ce-3.el7                    docker-ce-stable
docker-ce.x86_64            18.06.0.ce-3.el7                    docker-ce-stable
docker-ce.x86_64            18.03.1.ce-1.el7.centos             docker-ce-stable
docker-ce.x86_64            18.03.0.ce-1.el7.centos             docker-ce-stable
docker-ce.x86_64            17.12.1.ce-1.el7.centos             docker-ce-stable
docker-ce.x86_64            17.12.0.ce-1.el7.centos             docker-ce-stable
docker-ce.x86_64            17.09.1.ce-1.el7.centos             docker-ce-stable
docker-ce.x86_64            17.09.0.ce-1.el7.centos             docker-ce-stable
docker-ce.x86_64            17.06.2.ce-1.el7.centos             docker-ce-stable
docker-ce.x86_64            17.06.1.ce-1.el7.centos             docker-ce-stable
docker-ce.x86_64            17.06.0.ce-1.el7.centos             docker-ce-stable
docker-ce.x86_64            17.03.3.ce-1.el7                    docker-ce-stable
docker-ce.x86_64            17.03.2.ce-1.el7.centos             docker-ce-stable
docker-ce.x86_64            17.03.1.ce-1.el7.centos             docker-ce-stable
docker-ce.x86_64            17.03.0.ce-1.el7.centos             docker-ce-stable
Determining fastest mirrors
 * base: mirrors.aliyun.com

# 例如我这里安装18的最后一个版本
$ sudo yum install docker-ce-18.09.9-3.el7 docker-ce-cli-18.09.9-3.el7 containerd.io
# 实际应用最好安装最新的版本
$ sudo yum install docker-ce-20.10.1-3.el7 docker-ce-cli-20.10.1-3.el7 containerd.io

# 启动docker
$ sudo systemctl start docker
$ sudo systemctl enable docker

# 添加用户到docker组
$ sudo usermod -aG docker your-user
$ sudo usermod -aG docker $USER

# 卸载docker和docker-engine
$ sudo yum remove docker-ce docker-ce-cli containerd.io
$ sudo rm -rf /var/lib/docker

# 安装docker-compose
$ sudo curl -L "https://github.com/docker/compose/releases/download/1.27.4/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
# 如果你从 Github 下载文件较慢,可以换成下面的命令
$ sudo curl -L "https://alittler.oss-cn-hangzhou.aliyuncs.com/software/docker/compose/1.27.4/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
# 设置可执行权限
$ sudo chmod +x /usr/local/bin/docker-compose
# 安装后如果提示没有 docker-compose 命令,执行如下命令添加 软连接到 /usr/bin
$ sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
# 查看 docker-compose 版本
$ docker-compose --version


# 设置Docker镜像加速
# 通过修改daemon配置文件/etc/docker/daemon.json来使用加速器
$ sudo mkdir -p /etc/docker
$ sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://my0hjxag.mirror.aliyuncs.com"]
}
EOF
$ sudo systemctl daemon-reload
$ sudo systemctl restart docker
上一篇:997. 找到小镇的法官(图,哈希表)


下一篇:LeetCode-997. 找到小镇的法官