安装Linux服务器,配置Docker服务
前言
搭建一个CI服务器,并不一定需要一个Linux操作系统,甚至有些场景中还必须使用Mac/Windows等系统,但是Linux是最常用的。所以这个教程也会以Linux作为载体去讲解整个搭建流程。
如果已经有现成的Linux服务器了,或者已经有可用的Docker服务了,视各自的情况,可跳过这节教程。
安装Linux操作系统
选择发行版
Linux是一个开源的操作系统内核,我们常说的Linux操作系统,是GNU/Linux的各种发行版。它的发行版非常多,比如说有 Debian/Ubuntu系列,RedHat/CentOS/Fedora系列等,甚至Windows 10中内置的WSL也算。
因为Debian/Ubuntu系列和RedHat/CentOS/Fedora系列等都算是常用的发行版本,所以后面介绍的时候会尝试将二者都覆盖到,不过主要还是基于Ubuntu系统来讲。
下载安装镜像(ISO文件)
Ubuntu: https://ubuntu.com/download/server
CentOS: https://www.centos.org/download/
选择一个自己喜欢的发行版,一般下载最新的稳定版即可。
刻录USB安装盘
需要有一个U盘或移动硬盘,使用一些USB启动记录工具制作即可。
可以考虑使用Rufus、UltraISO、Unetbootin等工具。网络上较多此类教程,可参考Ubuntu官方文档:https://ubuntu.com.cn/tutorials/create-a-usb-stick-on-windows#1-overview
安装
具体安装步骤,网上也有很多。搜索"Ubuntu安装"或"CentOS安装"就会得到许多类似的结果。
举例来说,UbuntuServer-18.04 U 盘安装教程
设置软件源
主流的Linux发行版中,一般都会有软件仓库。它是一个集中的查询和下载软件包,以及解决软件依赖关系的仓库。
系统中自带的软件源地址一般是国外的,在国内访问国外的镜像时,速度一般都不太理想。所以会需要换成国内的软件源。常见的软件源有清华、网易、阿里云等。
以Ubuntu为例,更新软件源需要编辑/etc/apt/sources.list
文件。写上更新后的地址。
具体的地址各大镜像源都会提供,如清华源有提供Ubuntu 镜像使用帮助。
设置好软件源之后,运行sudo apt update
更新仓库,apt是Debian系列的软件管理工具。
CentOS中对应于apt
的命令是yum
,对应的设置说明可参考:CentOS 镜像使用帮助
yum的大部分命令都会自动更新源信息,不需要主动执行apt update
类似的操作。
安装Docker服务
Docker在CI中有比较大的作用,主要是以下三个方面:
- 隔离性,能保护host的安全。
- 稳定性,每次提供的都是干净的环境,不受上次CI的状态影响。
- 性能:活用Docker Cache,可以达到不错的优化效果。
所以在继续后面的操作之前,先安装下Docker服务。
关于Docker的安装,其官网是有文档的:Install Docker Engine on Ubuntu。
这里复现下文档中的操作步骤:
删除旧的安装
如果之前没安装过,可以忽略这个步骤
1$ sudo apt-get remove docker docker-engine docker.io containerd runc
添加Docker源
1$ sudo apt-get update 2 3$ sudo apt-get install \ 4 apt-transport-https \ 5 ca-certificates \ 6 curl \ 7 gnupg-agent \ 8 software-properties-common 9 10$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - 11 12$ sudo add-apt-repository \ 13 "deb [arch=amd64] https://download.docker.com/linux/ubuntu \ 14 $(lsb_release -cs) \ 15 stable"
安装Docker
1 $ sudo apt-get update 2 $ sudo apt-get install docker-ce docker-ce-cli containerd.io
如果是用的Windows或Mac,也可以使用Docker Desktop。
启动Docker服务
1$ sudo systemctl start docker
设置Docker源
Docker同样有一个仓库,它的官方地址是 https://hub.docker.com/,和其它常见镜像源类似,它在国内的访问速度也不佳。
为了能够正常地使用Docker源,我们需要把它设置成国内的镜像源,如网易源。
修改文件/etc/docker/daemon.json
,如果没有则新建:
1{ 2 "registry-mirrors": ["http://hub-mirror.c.163.com"] 3}
测试拉取镜像
前端CI一般都会用到node相关的镜像,可以测试下拉取node的镜像,测试速度。
1$ docker pull node:12-alpine
这里稍微解释下node:12-alpine
的含义
docker pull 用来拉取镜像,冒号前面的是镜像名称,后面的是版本。如果不提供版本,默认为latest。这个方式和npm dist-tag很像。
下面是https://hub.docker.com/中node的版本列表:
虽然版本tag是随便定义的,但是也大概能看出维护node Docker镜像的团队,采用的命名方式为:<版本号>-<操作系统>的方式。12-alpine的含义即为 Node.js v12的最新版本 + alpine 操作系统。alpine是一个极简的Linux操作系统镜像,体积比较小。
如果能拉取成功,则说明Docker已经配置成功,本节就结束了。
下节我们讲下Gitlab CI的机制,以及基本的.gitlab-ci.yml的配置语法。