私有化轻量级持续集成部署方案--01-环境配置(上)

2022-03-08 17:21:01 浏览数 (1)

提示:本系列笔记全部存在于 Github, 可以直接在 Github 查看全部笔记

Docker

Docker 概述

Docker 是一种容器化技术,用于隔离应用之间的边界问题。 Docker 最常见的两个概念是:镜像(Image)容器(Container)

镜像(Image)

镜像(Image)是当前程序运行时所使用的所有文件资源。可以简单理解为镜像(Image)中包含程序运行所需要的所有文件资源(包括系统程序的文件资源)。

例如一个前端应用镜像,需要依赖 Nginx 服务器, Nginx 依赖系统。

所以一个前端应用程序镜像包含了操作系统文件资源、Nginx 文件资源。

所以镜像可以随意进行 “搬运” ,而不受宿主环境(本地系统)影响。

镜像(Image) 设计方案是分层设计的,社区内提供大量的基础镜像,可以利用这些基础镜像来构建镜像。

例如前端应用镜像,直接使用 Nginx 镜像构建镜像,就相当于在 Nginx 镜像层中又加了一层。 而 Nginx 镜像也是在 系统镜像层 上加的一层。

分层带来了诸多好处。

PS: Docker 并不是完全不受系统环境的影响,Docker 容器是运行在宿主环境上,在软件层面上进行的隔离,而并非虚拟机那种直接在硬件上进行隔离

PS:镜像(Image) 的层级划分实际上更为精细。在 Dockerfile 文件中, 一个语句就是一层。

容器(Container)

容器(Container)是根据镜像(Image)在系统中创建的一个进程,只不过对这个进程做了某些特殊处理。例如: 隔离限制(Namespace)资源限制(Control Group)

简单的可以理解为 容器(Container)就是一个受限制的进程。

Docker容器化里面有很多东西,有兴趣可以自行学习

Docker 部署

HTTPS 工具

Docker 安装需要 HTTPS 协议安装,一般第一步都是安装 apt-transport-https

sudo apt install apt-transport-https ca-certificates curl software-properties-common

腾讯云服务器中已经具有了 HTTPS 协议的包,所以直接省略此步骤,没有的话使用上面语句进行安装

添加 Docker 存储库密钥

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

添加 Docker 存储库 apt

sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"

  • [arch=amd64] 表示 amd64 架构,其它还具有armhfarm64 等架构
  • $(lsb_release -cs) stable 表示稳定版。还有 edge(体验)test(测试)

apt 源添加成功后可以在 /etc/apt/sources.list 文件查看

然后更新 apt 配置文件

sudo apt update

安装 Docker CE

Docker 版本分为 Docker EE(企业版)Docker CE(社区版)Docker EE 提供了一些收费的高级特性。

可以使用 apt 查看当前可用的Docker CE版本

apt list -a docker-ce

在写这篇文章时的最新的版本时 Docker-CE 20.10.12,在此就安装Docker-CE 20.10.12

sudo apt install docker-ce=5:20.10.123-0ubuntu-focal

安装成功后可以取消 Docker 的自动更新,防止版本更新导致错误。

sudo apt-mark hold docker-ce

Docker 启动与设置

启动 Docker 服务

service docker start

启动成功后可以执行 Docker 命令

添加用户到 Docker

在非 root 用户执行 Docker 命令必须使用 sudo,这是一个繁琐的过程,可以将指定用户添加至 Docker 组解决这个问题

添加用户至 Docker

sudo usermod -aG docker [USER]

添加完毕后需要重新登陆才生效

设置 Docker 镜像源

Docker 默认镜像源地址是在国外,镜像拉取会很慢,可以将镜像源改为国内镜像源

修改 Docker 默认源是修改 /etc/docker/daemon.json(没有此文件,可以自行创建)

在此文件中添加国内镜像,可以添加一个或多个。

在此添加了 网易镜像源中国科技大学镜像源Docker 官方中国区镜像源

代码语言:javascript复制
{
	"registry-mirrors": [
		"https://hub-mirror.c.163.com",
		"https://docker.mirrors.ustc.edu.cn",
		"https://registry.docker-cn.com"
	]
}

添加完毕后需要重启 Docker 服务

sudo systemctl daemon-reload

sudo systemctl restart docker

重启成功后可以使用 docker info 命令查看修改的结果

其中 Registry Mirrors 就是镜像源属性。

Docker Compose

Docker Compose 概述

Docker Compose 是一个 Docker 编排工具(容器组管理)。可以对多个 容器 合并到一个组进行管理。

在现实场景中,一个项目往往具有多个应用,一个项目可能会具有多个容器组成,也就是形成一个容器组。Docker Compose 就是提供这个组的管理工具。

PS: 容器是一个原子单位,虽然可以直接将多个应用(多个进程)打包在一个容器内,但是不推荐这样做,容器应保持单进程执行

Docker Compose 使用了 YAML标记语言作为配置文件,所以使用 Docker Compose 管理容器还有一个好处是使用文件形式组织容器配置,而不是单纯的命令行

容器编排工具还有其它工具,比如鼎鼎大名的 kubernetes(k8s),还有 Docker SWARMK3s等。

企业级别的一般都是用 kubernetes(k8s),不过个人且还是小 4G 服务器还是算了。

一开始我想选择 K3s,但是那玩意部署也有些麻烦,占用资源也不少,且想了想还是单机也没必要使用集群方案,最后就直接选择了 Docker Compose

Docker Compose 部署

Docker Compose 安装包可以直接从 github 下载,目前最新版本是 v2.2.3

可以直接在服务器中使用 curl 下载

sudo curl -SL https://github.com/docker/compose/releases/download/v2.2.3/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose

但是国内访问 github 真的是超级慢,所以建议直接在本地下载(使用加速器),然后上传服务器

下载时注意系统版本,一般情况下都是 Linux x86_64,如果不放心可以使用 uname -sm 命令查看

本地下载完成之后,将文件更名为 docker-compose 并上传到服务器 /usr/local/bin/ 目录下就相当于安装成功了。

PS: 注意上传时登录的用户,一般用户没有权限上传此目录,我所有上传操作都是使用的 root 用户。

安装完成后,一般用户也并没有执行 Docker Compose 的权限 , 需要设置 Docker Compose 的读写权限。

sudo chmod x /usr/local/bin/docker-compose

在此直接将 Docker Compose 的执行权限设置给了所有用户,如果需要详细设置,使用 chmod 命令具体参数设置

设置完成后就可以执行 docker-compose 命令了

Docker Compose 命令

docker-compose 命令可以查看网上资料,具体命令我也不熟,都是使用网上现查, 一般也是使用另一个管理工具 Portainer 来执行。

0 人点赞