私有化轻量级持续集成部署方案--01-环境配置(上)
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架构,其它还具有armhf、arm64等架构$(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 官方中国区镜像源
{
"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 SWARM、K3s等。
企业级别的一般都是用 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 来执行。

浙公网安备 33010602011771号