云原生 | Docker:基础篇

      最后更新:2022-07-24 00:07

      目录

      前言

      1.1多克入口

      1.2多克架构

      1.3多克仓库

      1.4多克安装

      1.5多克镜子加速器

      1.6多克镜

      1.7多克容器

      1.8多克视图日志

      1.9 案例

      1.10多克数据容量

      二、常用软件安装

      2.1 基本安装

      2.1.2 mysql

      片尾:

      前言

      随着云原生技术的发展,这块内容在开发和运维中也变得十分重要,而云原生的容器化技术代表就是 Docker,本文是将 Docker 的基础知识进行回顾,也作为打开云原生的起点篇。

      1.1多克入口

      1.1 背景

      在当今企业级项目开发中,具有高可用性、高共同开发、高性能、安全、监控等特点。

      • 高可用、高并发--->解决方案:服务器配置--->集群。

        例如,12306网站,在春节的高峰期和正常交通是不同的;例如,二倍11秒杀人,也是不同的。

        这一现象是服务不平等 、 资源浪费, 如何动态解决这些问题?

        如何部署需要大量人力和物理资源的多个服务器应用程序,如何有效地部署?

        服务容器(可用性) 如果应用程序遇到问题,它可能导致该节点的所有应用程序崩溃。

        一旦正式部署,确保发展环境和生产环境保持一致,那么泄漏情况如何?

      • 对于以前的部署,新的解决方案有Docker容器化部署

      1.2多克概览

      Docker是一个开放源代码的应用程序容器引擎,允许开发者将应用程序包起来,并依赖于它们被包入一个可移动容器,然后在任何流行的Linux机器上发布,用于虚拟化。

      名字上讲, 多克是一个容器引擎, 是一个容器而不是说, 是什么引擎?

      ​​​​​​​

      例如:汽车的引擎是发动机,有了发动机才能跑起来,docker 也是一种引擎,基于这个引擎,开发者能让他们开发的应用处于一个有隔离性的、可移植性的容器中,以便于在各种机器中部署而无需考虑兼容性问题。

      因此,Docker 的logo 是一条鲸鱼承载着各种小集装箱,它的角色正是这条鲸鱼起着引擎的作用,而集装箱则对应各个容器。

      那什么是容器呢?

      专业的说法就是,容器是一种轻型、便携式、自载的软件包装技术。使应用程序几乎在任何地方都运行同样的方式。容器共享相同的操作系统资源。因为容器是共享的主要操作系统的核心,因此,无法运行与主服务器不同的操作系统,这意味着您不再可以在Linux服务器上运行Windows。

      为什么多克?

      多克可以自动包装和发布Web应用程序

      自动测试和持续集成和释放。

      在服务类型环境中部署和调整数据库或其他后端应用程序。

      首先编译或扩展现有平台创建自己的 Pass环境。

      1.3.1简化程序

      Docker允许开发者将应用程序包起来,并依靠将它们包成一个可移动的容器,然后在任何流行的Linux机器上发布它,便可用实现虚拟化。多克已经改变了虚拟化的方式,允许开发人员直接管理自己的Docker结果。方便快捷已经是 Docker 的最大优势,过去需要几天甚至几个星期的任务,在多克容器中,只需要数秒能完成。

      1.3.2节省开支

      Docker 与云的结合,让云空间得到了充分的利用,不仅解决了硬件管理问题,也改变了虚拟化的方式。它会把公共的部署提取出来节省空间。

      1.3.3可持续的交付和部署

      Docker可以用于通过自定义应用程序镜子实现持续集成、持续交付和部署。开发者可以使用 Dockerfile来创建镜子,并结合连续集成系统集成测试,操作人员可以快速部署镜子直接在生产环境中,自动部署甚至可以与连续部署系统相结合。并且使用 Dockerfile来让镜子变得透明,帮助在更好的生产环境中部署镜子。

      1.3.4易于移动

      Docker确保执行环境的一致性,使得应用程序更容易迁移,无需担心环境的变化会妨碍它们正常运行。

      1.4多克与虚拟机之间的区别

      作为一种轻量虚拟化方法,多克在运行应用程序方面比传统的虚拟机有显著的优势:

      • Docker容器很快, 启动和停止可以在秒级实现, 这相比传统的虚拟机方式要快得多 。
      • Docker容器对系统资源需求很少, 一台主机上可以同时运行数千个 Docker容器。
      • Docker使用户更容易获得、分发和更新应用程序镜子,使用Git-like操作、简单的指令和低学习成本。
      • Docker通过Docker配置文件支持灵活的自动化创建和部署机制。 提高工作效率。除了运行多克容器应用程序之外,它基本上不消耗额外的系统开支,同时确保应用程序的性能,尽量减少系统成本。在传统虚拟机上运行N不同的应用程序需要运行N虚拟机(每个虚拟机需要单独分配专有存储器、磁盘等资源),而且多克只启动N个单独的容器,将应用程序放在容器中.当然, 在隔离性方面,传统的虚拟机增加了额外的隔离层。但这并不意味着多克不安全。多克在Linux系统上使用多种保护机制来实现严格可靠的隔离。从1.版本3开始,多克介绍了安全选项和镜像签名机制,这大大提高了多克的安全。

      1.2多克架构

      1.2.1 简介

      Docker使用客户端-服务器架构管理和创建Docker容器,使用远程API。

      Docker 容器通过 Docker 镜像来创建。

      容器和镜子之间的关系与面向对象编程中的对象和闪电类似。

      1.2.2多克的基本概念

      前面说的Docker 它有三个基本概念需要理解:

      • 镜像(Image)
      • 容器(Container)
      • 仓库(Repository)

      多克的仓库类似于马文,里面有许多镜子,类似于罐头包装,

      • Maven的中心仓库地址是 mvnrepository.com/。
      • 多克的中心仓库地址是 hub.Docker.com/

      一个镜像可以构造出很多容器,就像 java 中一个类可以创建出很多对象。例如根据 mysql 镜像,我构造出10个 mysql 的容器,这些容器都相互隔离,十分方便

      1.2.3多克引擎

      从上图中可以看出,Docker Engine中包含了三个核心组件(docker CLI、REST API和docker daemon),这三个组件的具体说明如下。

      ● docker CLI(command line interface):表示Docker命令行接口,开发者可以在命令行中使用与多克有关的命令来与多克大卫进程进行交互,从而管理诸如image(镜像)、container(容器)、network(网络)和data volumes(数据卷)等实体。

      REST API:指示应用程序API接口,通过该接口开发者可以与多克的守护程序进行交互,从而指示后端执行相关操作。

      ● docker daemon:表示Docker的服务端组件,他是Docker架构中运行在后台的一个守护进程,可以接收并处理来自命令行接口及API接口的指令,然后进行相应的后台操作。

      1.3多克仓库

      在前面了解到,Docker 的仓库用于存放镜像,Docker Hub 提供了庞大的镜像集群供使用。

      Docker 官方维护了一个公共仓库 Docker Hub ,其中已经包括了数量超过 2,650,000 的镜像。大部分需求都可以通过在 Docker Hub 中直接下载镜像来实现。

      仓库分为公共和私人仓库,类似于Github代码管理仓库。

      • 公共存储: 默认, 提供大量的官方镜子, 和国内访问可以由加速器如阿里云加速器使用.
      • 私人仓库: 用户在当地建造私人仓库,供私人使用.

      1.4多克安装

      要安装 Docker 引擎,您需要 CentOS 7 或 8 的维护版本。不支持或测试存档版本,centos7 的内核版本在3.10 以上。

      关于多克的参考,请参阅docs.Docker.com/engine/inst..

      1、校验版本

      从 2017 年 3 月开始, docker 在原来的基础上分为两个分支版本 :Docker CE 和 Docker EE。

      Docker CE是社区免费版本,Docker EE是企业版本,强调安全性,但需要收费。

      本文安装了Docker CE。

      2、移除旧的版本

      安装一些必要的系统工具

      安装所需的软件包。yum-utils提供了 yum-config-manager应用程序,而 device-mapper-persistent-data和lvm2需要 devicemapper存储驱动程序。

      4、添加软件源信息

      源1:(官方推荐)

      来源2:(阿利云源)在国家使用

      更新 yum缓存

      6.安装Docker-CE

      7.启动多克后端服务

      8.重新启动多克服务

      9.查看多克版本

      删除多克

      1.5多克镜子加速器

      由于国内网络问题,多克镜的拉动速度较慢,所以我们需要配置加速器来解决这个问题。

      多克官员和国内服务提供商提供国内加速器服务,例如:

      • Docker 官方提供的中国 registry mirror
      • 阿里云加速器
      • 腾讯云加速器

      因为我这台服务器是腾讯云的,我就使用腾讯云来配置了。

      请参阅阿里云的加速器: developer.Aliyun.Com/article/299..

      1、创建文件

      2、添加配置

      3、重启

      多克加速器视图

      托克信息检查镜像地址,以便成功配置.

      1.6多克镜

      镜子是多克的三个组成部分之一。

      在运行容器之前,多克需要一个存在于本地的镜子,如果镜子不存在于本地,多克将它从镜子仓库下载。

      1.6.1多克获取镜子

      之前提到过,Docker Hub 有大量的高质量的镜像可以用,这里我们就说以下怎么获取这些镜像

      查找镜像

      通过 docker search 命令来搜索镜像。后面会列出是否官方、starts 数等参考。

      获取镜像

      从 Docker 镜像仓库获取镜像的命令是 Docker pull ,其命令格式为:

      具体地说,它可以通过多克拉动--帮助命令查看,而没有死注。

      例如,下载Tomcat

      列出镜像

      要想列出已经下载下来的镜像,可以使用 docker image ls 命令。

      清单包含仓库名称、标签、镜像ID、创建时间和空间。

      镜像ID 是镜像的唯一标识,对应人的身份证。它可以由多个 TAG标签表示不同版本。docker 同一镜像中 docker 的公共部分会提取出来节省空间。

      1.6.2 多克删除本地镜子

      删除镜子。必须确认此镜子目前没有由任何容器使用

      1.6.3 多克其他辅助命令

      查看本地镜子 IMAGE ID

      查看制作镜子的过程

      1.6.4 多克保存图像

      备份本地仓库的镜像

      用保存命令在当前目录下保存本地仓库的镜子

      2.从本地目录中导入镜像备份文件到本地多克仓库

      3.从本地目录导入镜像备份文件到本地多克仓库

      1.7多克容器

      容器是多克的核心概念.

      简言之,容器是一个独立运行的应用程序或应用程序组,及其操作环境。

      相应的虚拟机可以被理解为整个操作系统集,模拟操作(提供运行状态环境和其他系统环境)和运行在它们之上的应用程序。

      1、查看容器状态

      2,Docker启动容器

      启动容器有两种方法:一种是创建一个基于镜子的新容器并启动它,另一种是重新启动将停止的容器。

      docker运行参数 Image name:由标签执行的命令

      常用参数:

      docker run --rm -d --name tomcat1 -p 8080:8080 tomcat

      练习tomcat

      3、停止容器

      docker stop mirror IDname

      4、启动停止的容器

      docker start mirror IDname

      5、删除容器

      Docker rm mirror ID name. 删除容器必须停止当前运行的容器.

      6、进入容器

      某些时候需要进入容器进行操作,使用 docker exec 命令

      -i -t 参数

      多ckerexec后端可以由多个参数来跟踪,这里主要解释-i-t参数。

      当只使用-i参数时,接口没有熟悉的Linux命令提示,因为没有分配的伪端口,但是命令执行结果仍然可以返回。

      当-i-t参数一起使用时, 可以看到一个外在熟悉的Linux命令提示.

      示例:

      输入容器后, 修改默认的 tomcat页,然后再次访问视图效果.

      注意,Linux包是默认容器中最小安装的,只有最基本的命令。

      退出:不会使容器停止。

      交换 host 和 container 之间文件

      在主机和容器之间使用COPY文件如下:

      服务器将文件复制到容器中:a.txt将文件复制到指定的容器目录中

      docker cp a.txt tomcat-8080:/usr/local/tomcat/webapps/ROOT

      把容器放在b.Copytxt内

      docker cp tomcat-8080:/usr/local/tomcat/webapps/ROOT/b.txt /root

      1.8多克视图日志

      多克视图日志

      --since: 此参数指定输出日志的开始日期,即仅指定日后日志

      -f:查看实时日志

      -t:查看日志创建日期

      -tail = 10 : 查看最后10个记录

      tomcat-8080:容器名称

      1.9 案例

      既然你已经学会了这些基本的Docker命令,让我们使用Docker方法部署一个项目到Tomcat服务器上。

      将文件复制到网页应用程序,打开访问。

      1.10多克数据容量

      问题: 通过镜子创建一个容器.容器一旦被销毁,然后,容器中的数据将一起删除。但有些情况下,通过服务器上传的图像将丢失,容器中的数据不处于持久状态。有没有独立的容器?你能为多个容器提供耐用物品,以便一起使用 吗?这就是数据卷。

      1.10.数据量是什么

      数据量:一个或多个容器可用的特别目录

      特性:

      • 数据量可以在容器之间共享和重用
      • 数据表的修改将生效
      • 对数据容量的更新不会影响镜子
      • 默认数据量将永远存在,容器将立即被删除

      为了解决这些问题,docker 引入了数据卷(Volume)机制,数据卷是存在一个或多个容器中的特定文件或文件夹,这个文件或文件夹以独立于 docker 文件系统的形式存在于宿主机中。

      数据量最大的特征是其生产周期与容器的寿命周期无关。

      使用数据卷的场景:

      • 数据可以共享在多个容器之间,数据可以共享在多个容器之间,并且数据可以共享在多个容器之间,同时在读写或读写方式上加载相同的数据量。
      • 当主机不能保证存在一个特定的目录或某个固定路径文件时,使用数据量可以避免由于这个限制造成的问题。
      • 当您希望容器中的数据在主机外存储,例如在远程主机或云中。
      • 当您需要备份、恢复和迁移不同主机之间的容器数据时,数据量是最好的选择。

      1.10.2数据表的应用

      1、创建数据卷

      docker volume create 数据卷名称 创建数据卷之后,默认会存放到目录: /var/lib/docker/volume/数据卷名称/_data目录下

      2、查看数据卷

      docker volume inspect 数据卷名称

      查看所有数据体积信息

      docker volume ls

      4、删除数据卷

      多克体积 rm 数据体积名称

      5、应用删除卷

      docker run -v 数据卷名称(主机路径):容器路径镜像ID(当您映射数据卷时,数据卷不存在时,多克将帮助您自动创建)

      docker run -v path:容器镜像ID内路径(直接指定路径为数据量存储位置,建议使用)

      使用dockerrun-v直接创建数据量:

      二、常用软件安装

      2.1 基本安装

      2.1.1 nginx

      拉取 Nginx 镜像

      查看本地镜子列表(你可以看到nginx)

      运行容器

      进入容器:

      • /etc/nginx目录是一个配置文件目录
      • /usr/share/nginx目录安装静态HTML文件
      • /usr/sbin/nginx是启动脚本

      容器是纯净的,最小安装,所以我们需要将容器内部的配置文件映射到主机,并映射到本地目录。

      挂载映射卷

      • 1、宿主机创建目录

      • 在该目录下创建三个文件目录

      • 3、拷贝配置文件

      • 4、修改配置文件

      • 拆卸nginx容器

      • 6.创建容器,上传配置文件和映射端口

      集群搭建

      在刚才的配置中,我已经完成了单机节点的配置,现在开始进行nginx 的集群配置。通过 nginx 的负载均衡来择优选择哪一台服务器去执行(保证高可用)。

      • 输入 host 的 conf 路径,并修改 nginx.conf 的配置文件

      • 2、修改 conf./的default.conf 文件在 location {} 中,利用 proxy_pass 配置反向代理地址:

        这里http://不能减少,后面的地址必须与上游第一步定义的名称相一致,

        proxy_pass代理地址,转移到目标服务器

      • 2.1.2 mysql

      1.docker pull mysql

      2.docker run -d --name mysql -p 3306:3306 mysql

      片尾:

      继续试一次哦,订阅这个栏,主机会更新哦~

      本文由 在线网速测试 整理编辑,转载请注明出处。

          热门文章

          文章分类