Java进阶:Docker

      最后更新:2022-08-02 03:52:57 手机定位技术交流文章

      1.多克总览

      1.1.多克介绍

      多克是一个开放源代码应用程序容器引擎,基于Go语言的开发。Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后在任何流行的Linux机器上发布它,也可以实现虚拟化。这个容器完全是砂箱的机构,它们之间没有接口(如iPhone应用程序),更重要的是,容器性能成本非常低。多克是一个容器技术.解决软件跨环境迁移问题。

      多克应用程序场景

      • 自动包装和发布Web应用程序
      • 自动化测试和可持续发展集成和发布
      • 在服务类型环境中部署和调整数据库或其他后端应用程序

      使用Docker可以实现开发人员的开发环境、测试人员的测试环境和执行人员的生产环境的一致性。
      在这里插入图片描述

      Docker借鉴了标准集装箱的概念。标准集装箱将货物运往世界各地,Docker将这个模型运用到自己的设计中,唯一不同的是:集装箱运输货物,而Docker运输软件。

      1.2.Docker容器与传统的虚拟机的比较

      • 传统虚拟机在这里插入图片描述
        传统的虚拟机技术是基于在主操作系统上安装的虚拟机管理系统(如VirtualBox和VMWare),创建虚拟机(虚拟化各种硬件),从操作系统上安装到虚拟机,从操作系统中安装和部署各种应用程序。

      • Docker在这里插入图片描述
        Docker容器是在操作系统层面上实现虚拟化,直接复用本地主机的操作系统,而传统虚拟机则是在硬件层面实现虚拟化。与传统的虚拟机相比,Docker优势体现为启动速度快、占用体积小。

      1.3.多克组件

      在这里插入图片描述

      名称

      说明

      Docker 镜像(Images)

      Docker 镜像是用于创建 Docker 容器的模板。 镜像是基于联合文件系统的一种层式结构,由一系列指令一步一步构建出来。

      Docker 容器(Container)

      容器是一个或多个独立运行的应用程序。 例如镜像等于类和容器等于类

      Docker 客户端(Client)

      Docker客户端使用Docker API来通过命令行或其他工具与Docker的ដេមិន进程进行通信。

      Docker 主机(Host)

      一个物理或虚拟机器用于执行Docker 代emon进程和容器。

      多克监护程序

      Docker服务器端进程,支持运行Docker容器和管理镜子。

      Docker Store DockerHub (Registry)

      Docker 仓库用来保存镜像,可以理解为代码控制中的代码仓库。 Docker Hub提供了庞大的镜像集合供使用。用户也可以将自己本地的镜像推送到Docker仓库供其他人下载。

      2.多克安装和启动

      2.1.多克安装

      多克可以在Mac、Windows、 CentOS、DEBIAN、UBUUNTU和其他操作系统上运行,提供社区和企业版本,这个课程是基于 CentOS安装多克。CentOS6不适合多克支持,推荐使用 CentOS7.

      以下是 CentOS 7中安装Docker的步骤:

      2.2.设置镜子

      ustc是旧式Linux镜子服务提供商,仍远于ubuntu5。 版本04仍在使用。 ustc的docker镜子加速器的速度非常高
      来吧。 ustc多cker镜的优点之一是它是一个没有注册的真正公共服务。
      https://lug.ustc.edu.cn/wiki/mirrors/help/docker

      1. 编辑文件/etc/docker/daemon.json

      2. 将下列内容添加到文件中

      2.3.多克启动和停止命令

      3.多克常规命令

      3.1.镜子相关命令

      镜子:多克镜子是通过重叠文件系统(一种文件存储格式)创建的;它们是多克器的核心概念。可以假设镜子是一些运行环境或软件的包,用户可以从多克仓库下载基本镜子到本地,例如,开发者可以从多克仓库下载一个仅包含 Centos7系统的基本镜子,然后在镜子中安装jdk,mysql,Tomcat和自开发的应用程序,最后,这些环境被构造成一个新的镜子。开发者将新的镜子提交给测试者进行测试,测试者只是在测试环境中运行镜子,这确保开发者的环境和测试者的环境是完全一致的。在这里插入图片描述
      Docker为镜子操作提供了下列选项:

      • 查看镜像
      • 搜索镜像
      • 拉取镜像
      • 删除镜像

      3.1.1.查看镜子

      在这里插入图片描述

      • 目录:图片名称
      • TAG:镜像标签
      • IMAGE ID:镜像ID
      • 创建:镜子的创建日期
      • SIZE:镜像大小

      3.1.2.搜索镜子

      在这里插入图片描述

      • NAME:镜像名称
      • 说明:镜子描述
      • STARS:用户对镜子受欢迎度的评价
      • 官方或非官方
      • AUTOMATED:自动构建,表示该镜像由Docker Hub自动构建流程创建的

      3.1.3.追踪镜子

      在这里插入图片描述

      3.1.4.删除镜子

      在这里插入图片描述

      1. docker rmi $IMAGE_ID:删除指定的镜子
      2. docker rmidocker images -q:删除所有镜像

      3.2.与容器有关的指示

      容器也是多克的核心概念,容器是通过镜子操作生成的实例运行的。 镜子与容器之间的关系类似于Java中的类和对象之间的关系。

      Docker提供下列关于容器的操作信息:

      • 查看容器
      • 创建容器
      • 启动容器
      • 停止容器
      • 文件拷贝
      • 目录挂载
      • 查看容器ip地址
      • 删除容器

      3.2.1.查看容器

      查看当前运行的容器,使用命令: docker ps

      查看所有容器使用命令: docker ps -a

      在这里插入图片描述

      3.2.2.创建和发射容器

      根据现有的镜子创建和启动容器。使用命令:dockerrun创建和启动容器

      参数说明:
      -i:表示运行容器

      -t:指示容器在启动后将输入命令行。 在添加这两个参数后,容器创建者可以登录,即指定一个伪端子。

      –name:创建的容器的名称。

      -v:表示目录映射关系(前者是宿主机目录,后者是映射到宿主机上的目录),可以使用多个-v做多个目录或文件映射。注意:最好做目录映射,在宿主机上做修改,然后共享到容器上。

      -d:如果在运行后添加-d参数,在背景中运行时将创建一个保护容器(这样容器在创建后不会自动登录;如果仅添加-i-t参数,它会在创建后自动输入容器)。

      -p:表示端口映射,前者是主端口,后者是容器内映射端口。 -p可以用于映射多个端口

      .互动容器

      以交互式方式创建并启动容器,启动完成后,直接进入当前容器。使用exit命令退出容器。需要注意的是以此种方式启动容器,如果退出容器,则容器会进入停止状态。

      在这里插入图片描述

      3.2.2.2. 守护式容器

      创建一个守护式容器;如果对于一个需要长期运行的容器来说,我们可以创建一个守护式容器。命令如下(容器名称不能重复):

      在这里插入图片描述

      3.2.3.停止并启动容器

      在这里插入图片描述

      3.2.4文件复制

      • 下列命令可以用于从Linux主机复制文件到容器:

        在这里插入图片描述

      • 使用命令从容器中复制文件到Linux主机:

        在这里插入图片描述

        注:容器也可以在停止状态中完成文件的副本

      3.2.5.目录上传

      可以在创建容器的时候,将宿主机的目录与容器内的目录进行映射,这样我们就可以通过修改宿主机某个目录的文件从而去影响容器。

      创建容器时添加-v参数,后边为宿主机目录:容器目录,例如: docker run -di -v /usr/local/test:/usr/local/test –
      name=mycentos3 centos:7

      在这里插入图片描述

      注:如果您共享一个多层次目录,可能有迹象表明权力不足.这是因为 CentOS7 Selenux的安全模块阻塞了权限,您需要添加 -- privileged=true 参数来解决安装目录没有权限的问题。

      3.2.6.查看容器IP

      可以通过以下命令查看容器运行的各种数据 docker inspect 容器名称(容器ID)

      在这里插入图片描述

      在容器间的本地网络中,Linux主机可以与容器进行通信;然而,外部物理机器笔记本不能直接与容器进行通信,如果有必要,则需要通过主机端口进行代理。

      3.2.7.删除容器

      删除指定的容器: docker rm容器名称(容器ID) 删除所有容器: docker rmdocker ps -a -q

      在这里插入图片描述

      如果容器处于运行状态,删除失败,需要停止才能删除

      4.多克应用程序部署

      4.1.MySQL部署

      4.1.1.追踪镜子

      在这里插入图片描述

      4.1.2.创建容器

      ·docker run -di --name=mysql5.7 -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root mysql·

      • -p代表端口映射,格式为主机映射端口:容器运行端口

      • -e 代表添加环境变量 MYSQL_ROOT_PASSWORD 是root用户的远程登陆密码(如果是在容器中使用root登录的话,那么其密码为空)

        创建mysql5.7容器

        docker run -di --name=mysql5.7 -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root centos/mysql-
        57-centos7

      在这里插入图片描述

      4.1.3.操作容器

      在这里插入图片描述

      4.1.4.远程登录MySQL

      在这里插入图片描述
      使用Navicat在windows中进行远程登录在docker容器中的mysql。
      在这里插入图片描述

      4.2.汤姆卡特部署

      4.2.1.追踪镜子

      在这里插入图片描述

      4.2.2.创建容器

      在这里插入图片描述
      测试访问主机的端口号是900 Tomcat。地址: http://hostip:900,您可以在/user/local/tomcat/webapps下部署应用程序,然后再访问它们。

      4.3. Nginx部署

      4.3.1.追踪镜子

      4.3.2.创建容器

      重新进入主机: http://hostIP/

      4.4.重新部署

      4.4.1.追踪镜子

      4.4.2.创建容器

      4.4.3.操作雷迪斯容器

      在这里插入图片描述

      4.4.4.远程连接恢复

      可以使用redis图形界面客户端工具连接redis,端口也是6379。

      5. Docker Compose

      5.1.编写介绍

      5.1.1. 概念

      编译项目是多克官方的开放源代码项目,负责实现多克容器集群的快速编译.这是一个定义和运行多个容器的多cker应用程序工具。使用成分,您可以通过YMAL文件配置自己的服务,然后通过一个命令,你能使用配置文件
      创建和运行所有服务。

      5.1.2. 组成

      Docker-Compose将它管理的容器分成三个层,分别是工程(project),服务(service)以及容器(container)。Docker-Compose运行目录中的所有文件( docker-compose.yml,(例如扩展文件或环境变量文件)以形成项目,如果没有指定特殊的项目名称,则它是当前目录名称。一个项目可以包括多个服务,每个服务定义了容器运行的镜子,参数,依赖。一个服务可以包含多个容器实例。

      • 服务(service):一个应用的容器,实际上可以包括若干运行相同镜像的容器实例。每个服务都有自己的名
        词汇、使用镜子、上传的数据量、属于它们的网络、其他服务依赖的等等,即容器作为粒子,用户需要
        所完成的任务。
      • 项目: 完成的业务单元由docker - compose中一套关联的应用程序容器组成. 定义为yml. That is,
        Compose的一个配置文件可以解析为一个项目,Compose通过分析指定配置文件,得出配置文件所需完成的所有容器管理与部署操作。

      Docker-Compose的工程配置文件默认为docker-compose.yml,是一个自定义的配置文件,包含环境变量 COMPOSE_FILE或-f参数,定义多个与依赖相关的服务和每个服务运行的容器。

      使用 Dockerfile模板文件,它允许用户轻松定义一个单独的应用程序容器。在工作中,通常情况下,多个容器需要一起工作才能完成任务。例如,部署一个网站项目,除了Web服务容器外,经常需要添加后端数据库服务容器,甚至包括负荷平衡容器等。

      5.2.安装和卸载

      Compose目前已经完全支持Linux、Mac OS和Windows,在我们安装Compose之前,需要先安装Docker。下面我们以编译好的二进制包方式安装在Linux系统中。

      5.2.1. 安装

      在这里插入图片描述

      5.2.2. 卸载

      5.3.编写通用指令参考书

      在使用编译器之前,您可以执行docker-compose --help|-h查看编写程序的基本命令使用.

      也可以通过执行docker-compose [COMMAND] --help或者docker-compose --help [COMMAND]查看特定的使用格式。

      可以知道Compose命令的基本的使用格式为:

      命令选项如下:

      Docker Compose常见的命令列表如下:

      命令

      说明

      build

      在项目中构建服务容器

      help

      获得一个命令的帮助

      kill

      迫使服务容器停止发送SIGKILL信号

      config

      验证和查看组成文件配置

      create

      创建服务的容器。 简单地创建,并使用 startstartcompose

      down

      停止和删除容器、网络、镜像和数据量

      exec

      在运行的容器中执行命令

      logs

      查看服务容器的输出

      pause

      暂停一个服务容器

      port

      将公共码头映射到容器码头上

      ps

      项目中的所有当前容器列表

      pull

      拉取服务依赖的镜像

      push

      推送服务镜像

      restart

      重启项目中的服务

      rm

      删除所有(停用)服务容器

      run

      在指定服务上执行命令

      scale

      设置运行指定服务的容器数目

      start

      启动现有服务容器

      stop

      停止已经运行的容器,但不删除它

      top

      显示运行的进程

      unpause

      暂停服务恢复

      up

      自动完成一些列操作,包括创建镜子、创建服务、启动服务和关闭相关服务容器

      version

      打印版本信息

      5.3.1. up

      格式为:

      up命令十分强大,它尝试自动完成包括构建镜像,(重新)创建服务,启动服务,并关联服务相关容器的一些列操作。链接的服务都将会被自动启动,除非已经处于运行状态。

      在大多数情况下,我们可以通过这个命令直接启动项目。

      选项包括:

      5.3.2. ps

      格式为:

      项目中的所有当前容器列表。

      选项包括:

      5.3.3. stop

      格式为:

      停止已经运行的容器,但不删除它。

      选项包括:

      5.3.4. down

      格式为:

      停止和删除容器、网络、卷、镜像,这些内容是通过docker-compose up命令创建的. 默认值删除 容器 网络,可以通过指定 rmi 、volumes参数删除镜像和卷。

      选项包括:

      5.3.5. restart

      格式为:

      重启项目中的服务。

      选项包括:

      5.3.6. rm

      格式为:

      删除所有(停用)服务容器。

      选项包括:

      5.3.7. start

      格式为:

      启动现有服务容器。

      5.3.8. run

      格式为:

      在指定服务上执行命令。
      例如:

      将执行一个ubuntu容器,并执行一个 ping ww.Baidu.com命令。
      默认情况下,如果存在一个链接,所有关联服务都会自动启动,除非这些服务已经运行。 该命令类似于在启动容器后运行指定的命令,并根据配置自动创建关联的卷、链接等。

      1. 指定的命令将覆盖原先的自动启动命令
      2. 不要自动创建端口以避免冲突

      如果你不想自动启动关联容器,你可以使用-no-deps选项,例如:

      与网络容器关联的其他容器不会启动。

      选项包括:

      5.3.9. config

      格式为:

      验证和查看组合文件配置.

      选项包括:

      5.3.10. kill

      格式为:

      迫使服务容器停止发送SIGKILL信号。 支持通过-s参数来指定发送的信号,例如:通过如下指令发送SIGINT信号:

      docker-compose kill -s SIGINT

      5.3.11. create

      格式为:

      创建服务的容器。 简单地创建,您需要使用 startstartcompose。
      选项包括:

      5.3.12. exec

      格式为:

      类似于docker exec命令函数,它可以通过使用服务名登录到容器来访问。
      选项包括:

      5.4.编写模板文件

      模板文件是使用Compose的核心,涉及的指令关键字也比较多,大部分指令与docker run 相关参数的含义都是类似的。默认的模板文件名称为docker-compose.yml,格式为YAML格式。

      例如,编写模板文件:

      Docker Compose模板文件主要分为三个区域,如下:

      • services
        一个服务,可以定义为应用的一系列服务,每个服务都有自己的名称,使用镜子,上传的数据量,它所属的网络,它依赖的其他服务等等。
      • volumes
        数据卷,其中可以定义数据卷(名称等),然后上传到不同的服务使用。
      • networks
        可以定义应用程序的网络,其中应用程序的名称、使用的网络类型等。

      多克编写通用模板文件的主要命令:

      指令

      功能

      build

      指定服务镜子Dockkerfile的路径

      cap_add,cap_drop

      指定容器的内核能力(capacity)分配

      command

      在容器启动后执行的默认命令

      cgroup_parent

      指定母类cgroup组,这意味着限制该组的资源基础

      container_name

      指定容器名称。 默认将使用项目名称服务名称序列等格式

      devices

      指定设置映射关系

      dns

      默认的DNS服务器,可以是值或列表

      dns_search

      配置DNS搜索字段,可以是值或列表

      dockerfile

      指定用于额外编译镜子的 Dockerfile 文件,由此命令指定

      env_file

      从文件中获取环境变量,可以作为单独的文件路径或列表使用

      environment

      设置环境变量,可以是集合或字典格式

      expose

      暴露端口

      external_links

      连接docker-compose.yml外部容器,甚至不能由Compose管理的外部容器

      extra_hosts

      指定额外的主机名称映射信息

      image

      指定镜子名称或镜子ID。 如果镜子没有本地存在,编译器将尝试引出镜子

      labels

      指定服务镜子Dockkerfile的路径

      links

      其他服务中的容器链接

      log_driver

      指定日志驱动类型,它与多克的-log-driver参数类似。目前,支持三个类型的ログ驱动程序:log_driver "json-file",log_driver "syslog",log_driver "none"和log_opt。

      net

      设置网络模式。与docker clinet的-net参数类似的参数

      pid与主机系统共享进程命名空间。 通过进程ID访问和操作此选项打开的容器之间,以及通过进程ID访问和操作的容器和主机系统之间

      ports

      暴露端口信息

      security_opt

      指定容器模板标签机制的默认属性(如用户、角色、类型、级别等)。

      ulimits

      指定容器的限值

      volumes

      数据卷所挂载路径设置。可以设置宿主机路径(HOST:CONTAINER)或加上访问模式(HOST:CONTAINER:ro)

      5.5.编写应用程序

      要求:编译一个编译模板文件,同时运行Tomcat、MySQL和Redis容器。

      5.5.1.编译模型文件

      Docker-compose.yml文件的内容如下(该文件的内容可以在配置文件docker - compose.yml copy中找到):

      我们已经列出了上述三个服务: Redis1,mysql1,web1,分别,并指定了所有三个服务的相应的多克镜子和端口。

      5.5.2. 启动

      您可以在命令中看到,创建两个自定义网络(mycompose_dev和mycompose_pro),然后创建一个容器,并"攻击到..",将网络应用到服务中。

      您可以使用Docker网络 ls来查看一个特定的网络如下:
      在这里插入图片描述
      查看启动的容器:
      在这里插入图片描述

      5.5.3. 测试

      在进入启动时,可以在窗口下测试三个服务;例如,访问9090的下列Tomcat:
      在这里插入图片描述

      6. 迁移与备份

      在这里插入图片描述
      有关的命令如下:

      • docker commit将容器保存到镜子上
      • 托克保存镜像备份到 tar文件
      • 基于塔尔文件的多克负载恢复到镜像

      6.1.将多克容器保存为镜子

      使用多克提交命令可以将容器保存到镜子上。
      命令形式:docker commit 容器名称 镜像名称

      这个镜子的内容是当前容器的内容,您可以用这个镜子再次运行新的容器

      6.2. 镜像备份

      使用“docker save”命令可以将现有的镜子保存到一个Tar文件中。
      命令格式:Docker save –o tar文件名镜像名称

      在这里插入图片描述

      6.3.镜子修复和迁移

      使用docker load命令可以根据tar文件恢复为docker镜像。

      命令格式:Docker load -i tar文件名

      在这里插入图片描述
      在这里插入图片描述

      注意:执行多克负载命令恢复镜子时,必须先删除原来的镜子。

      7.文档文件

      7.1. Dockerfile文件是什么

      前面的课程中已经知道了,要获得镜像,可以从Docker仓库中进行下载。那如果我们想自己开发一个镜像,那该如何做呢?答案是:Dockerfile

      Dockerfile实际上是一个由一系列命令和参数组成的文本文件,Docker可以读取 Dockerfile文件并根据 Dockerfile文件的描述构建镜子。

      Dockerfile文件的内容一般分为四个部分:

      • 基础镜像信息
      • 维护者信息
      • 镜像操作指令
      • 容器启动时执行的指令

      7.2.文件夹常规命令

      在这里插入图片描述

      7.3.使用 Dockerfile创建镜子

      在这里插入图片描述

      7.4.基于镜子创建容器

      基于新创建的镜子 jdk1.8 创建和启动测试容器;

      在这里插入图片描述

      8.多克私人仓库

      8.1.私人仓库的建设和配置

      Docker官方的Docker hub(https://hub.docker.com)是一个用于管理公共镜像的仓库,我们可以把镜子从上面拉到现场,我们也可以把自己的镜子抬高。但是,有时我们的服务器无法访问互联网,或者你不想把镜子放在公共领域,所以我们需要建立自己的私人仓库来储存和管理自己的镜子。

      私有仓库搭建步骤:

      在这里插入图片描述
      在这里插入图片描述

      8.2.将镜子上传到私人仓库

      操作步骤:

      在这里插入图片描述
      在这里插入图片描述

      8.3.从私人仓库中检索镜子

      8.3.1.从私人仓库的服务器中检索镜子

      如果要将镜子拖到位于私人仓库的服务器上,则直接执行以下命令:

      在这里插入图片描述
      执行 docker info 命令之后显示内容:在这里插入图片描述

      将镜子拖到仓库的服务器是一个相对较小的操作,很容易理解。

      8.3.2.其他服务器引出私人仓库镜子

      在大多数情况下,它是在服务器部署了镜子的私有存储库之后;从其他服务器的私有存储库中取镜子,为了取私有存储库镜子,您需要修改多克配置文件并在启动时设置存储库地址。

      重载多克配置文件,并在修改后重新启动多克

      在这里插入图片描述
      重新启动后,你可以在私人仓库里拉出镜子:

      在这里插入图片描述
      整个多克的私人仓库的运作形式如下:在这里插入图片描述

      先自我介绍一下,他高中毕业了13年,曾经在小公司待过,去过华为OPPO等大厂,18年进入阿里,直到现在。了解大多数年轻的Java工程师,想要升技能,经常需要找到自己的成长或向班上汇报。但对于培训机构来说,学费大约是人民币,着实压力不小。当你不在系统时,自我学习的效率很低,而且很持久。也很容易停止天花板技术。所以我为你收集了一个"java开发工具"初衷也很简单,这是一个想帮助自己学习的朋友,却不知道该从哪里学习。同时减少每个人的负担.添加下方名片,你可以得到完整的学习信息

      本文由 在线网速测试 整理编辑,转载请注明出处,原文链接:https://www.wangsu123.cn/news/31227.html

          热门文章

          文章分类