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


    提示:本系列笔记全部存在于 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 官方中国区镜像源

    {
    	"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 来执行。

  • 相关阅读:
    【机器人定位引导中的机器视觉技术】
    黑产反诈有方法,异常识别我在行—欺诈反洗钱等领域用得最多的经典算法
    OpenGL 曝光度调节
    chmod,rwx Linux文件属性笔记221107
    一文弄懂JUnit5相关注解
    c++智能指针[ shared_ptr / unique_ptr / weak_ptr ]介绍与使用
    html网页设计大学生作业成品——公益校园网站设计与实现(HTML+CSS+JavaScript)
    弘辽科技:淘宝同行店铺排名在哪看?如何提升?
    移动端web调试工具vConsole使用详解
    CTF —— 网络安全大赛(这不比王者好玩吗?)
  • 原文地址:https://www.cnblogs.com/yan7/p/15811198.html