• 镜像(Image)、容器(Container)


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

  • 相关阅读:
    优秀大数据GitHub项目一览
    自定义组件-BreadcrumbTreeView 的使用
    IOS中的属性列表----Property List
    即时通讯之smack客户端配置
    Android studio 使用问题汇总
    触摸事件UITouch的应用
    Android界面设计之对话框——定制Toast、AlertDialog
    android_orm框架之greenDAO(一)
    火速提升Android仿真器的运行速度 ——仿真器Genymotion
    Android 中的缓存机制与实现
  • 原文地址:https://www.cnblogs.com/Leo_wl/p/16221649.html
Copyright © 2020-2023  润新知