logo

鱼肚的博客

Don't Repeat Yourself

安装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中有比较大的作用,主要是以下三个方面:

  1. 隔离性,能保护host的安全。
  2. 稳定性,每次提供的都是干净的环境,不受上次CI的状态影响。
  3. 性能:活用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的版本列表:

node版本列表

虽然版本tag是随便定义的,但是也大概能看出维护node Docker镜像的团队,采用的命名方式为:<版本号>-<操作系统>的方式。12-alpine的含义即为 Node.js v12的最新版本 + alpine 操作系统。alpine是一个极简的Linux操作系统镜像,体积比较小。

如果能拉取成功,则说明Docker已经配置成功,本节就结束了。

下节我们讲下Gitlab CI的机制,以及基本的.gitlab-ci.yml的配置语法。