云原生之docker详解

这篇具有很好参考价值的文章主要介绍了云原生之docker详解。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

1.云原生概念

1.1 云原生定义

1.2 云原生元素

1.2.1 微服务

1.2.2 DevOps

1.2.3 持续交付

1.2.4 容器化

2. Docker

2.1 Docker概述

2.1.1 Docker 定义

2.1.2 Docker应用场景

2.1.3 Docker的架构

2.2 Docker命令

2.2.1 docker进程相关命令

2.2.2 docker镜像相关命令

2.2.3 docker容器相关命令

2.2.4 日志进程

2.2.5 数据卷容器

2.2.6 dockerfile构建docker镜像文件

2.2.7 Docker Compose


 文章来源地址https://www.toymoban.com/news/detail-471619.html

1.云原生概念

1.1 云原生定义

云原生”顾名思义,就是“生在云上、长在云上”。
云原生是一种以云计算技术为基础,利用容器、微服务、DevOps 和自动化等技术实现敏捷开发、快速部署的应用程序架构,这就是云原生。
云原生是面向“云”而设计的应用,因此技术部分依赖于传统云计算的 3 层概念,基础设施即服务(IaaS)、平台即服务(PaaS)和软件即服务(SaaS)。

1.2 云原生元素

云原生元素如下图:

云原生之docker详解

 

1.2.1 微服务

微服务解决的是我们软件开发中一直追求的低耦合+高内聚,记得有一次我们系统的接口出了问题,结果影响了用户的前台操作,于是黎叔拍案而起,灵魂发问:“为啥这两个会互相影响?!”

微服务可以解决这个问题,微服务的本质是把一块大饼分成若干块低耦合的小饼,比如一块小饼专门负责接收外部的数据,一块小饼专门负责响应前台的操作,小饼可以进一步拆分,比如负责接收外部数据的小饼可以继续分成多块负责接收不同类型数据的小饼,这样每个小饼出问题了,其它小饼还能正常对外提供服务。

1.2.2 DevOps

DevOps 的意思就是开发和运维不再是分开的两个团队,而是你中有我,我中有你的一个团队。我们现在开发和运维已经是一个团队了,但是运维方面的知识和经验还需要持续提高。

1.2.3 持续交付

持续交付的意思就是在不影响用户使用服务的前提下频繁把新功能发布给用户使用,要做到这点非常非常难。我们现在两周一个版本,每次上线之后都会给不同的用户造成不同程度的影响。

1.2.4 容器化

容器化的好处在于运维的时候不需要再关心每个服务所使用的技术栈了,每个服务都被无差别地封装在容器里,可以被无差别地管理和维护,现在比较流行的工具是 docker 和 k8s。

所以你也可以简单地把云原生理解为:云原生 = 微服务 + DevOps + 持续交付 + 容器化

 

2. Docker

2.1 Docker概述

2.1.1 Docker 定义

Docker 是一个开源的应用容器引擎,基于Go 语言并遵从 Apache2.0 协议开源。 Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口,更重要的是容器性能开销极低。

2.1.2 Docker应用场景

  • Web 应用的自动化打包和发布。

  • 自动化测试和持续集成、发布。

  • 在服务型环境中部署和调整数据库或其他的后台应用。

  • 解决软件跨境迁移的问题

2.1.3 Docker的架构

云原生之docker详解

 

镜像(image)

Docker镜像(Image)就是一个只读的模板。镜像可以用来创建Docker容器,一个镜像可以创建很多容器。

容器(container)

Docker利用容器(Container)独立运行一个或一组应用。容器是使用镜像创建的运行实例。它可以被启动、开始、停止、删除。每个容器都是相互隔离的、保证安全的平台,容器是一个简易版的Linux环境和运行在其中的应用程序。

仓库(Repository)

仓库(Repository)是集中存放镜像文件的场所。仓库(Repository)和仓库注册服务器(Registry)是有区别的。仓库注册服务器上往往存放着多个仓库,每个仓库中又包含了多个镜像,每个镜像有不同的标签(tag)。仓库分为公开仓库(Public)和私有仓库(Private)两种形式。最大的公开仓库是Docker Hub(https://hub.docker.com/),存放了数量庞大的镜像供用户下载。国内的公开仓库包括阿里云、网易云等。
 

2.2 Docker命令

2.2.1 docker进程相关命令

#启动docker
systemctl start docker

#停止docker
systemctl stop docker

#查看docker状态
systemctl status docker

#重启docker
systemctl restart docker

#设置开机启动
systemctl enable docker

2.2.2 docker镜像相关命令

#查看镜像,查看本地所有的镜像
docker images

docker images 
    -q #查询所有镜像的ID
    -a #列出所有的镜像
    --help #命令帮助
#查询如下
#镜像的仓库源, 镜像的标签,镜像的id,     镜像的创建时间,   镜像的大小
REPOSITORY    TAG       IMAGE ID       CREATED         SIZE
hello-world   latest    feb5d9fea6a5   14 months ago   13.3kB


#搜索镜像:从网络中查询需要的镜像
docker search 镜像的名称

#拉取镜像:从Docker仓库下载镜像到本地,镜像名称格式为 名称:版本号, 如果不指定,则是最新版,如果不知道镜像的版本号,可以去hub.docker.com去查询
docker pull 镜像名称

#删除指定镜像
docker rmi 镜像id 

2.2.3 docker容器相关命令

docker run 参数 镜像名称:版本号

参数说明:
    * -i:保持容器运行,通常与-t同时使用,加上 it 这两个参数后,容器创建后自动进入容器中,退出容器后,容器自动关闭,
    * -d:以守护(后台)模式运行容器,创建一个容器在后台运行,需要使用docker exec 进入容器,退出后,容器不会关闭。
    * --name: 为创建的容器命名
    * -p 宿主机端口:容器端口
#查看正在运行容器
docker ps
#查看所有容器
docker ps -a

#创建并启动容器
docker run -d --name nginx1 -p 4200:80 nginx

#进入容器
docker exec -it ngnix1 /bin/bash

#停止容器
docker stop 容器名称或者容器id

#启动容器
docker start 容器名称或者容器id

#删除容器:如果是运行状态则删除失败,需要停止容器才能删除
docker rm 容器名称或者容器id


#查看容器信息
docker inspect 同期名称或者容器id

2.2.4 日志进程

#查看最近日志
docker logs -f 容器名/容器ID

#最近30分钟的日志
docker logs

#查看某时间之后的日志
docker logs -t  --since="2022-08-08T18:08:08" 容器ID

#查看某时间段日志
docker logs  -t  --since="2022-08-08T18:08:08" --until "2022-08-08T20:08:08" 容器ID

2.2.5 数据卷容器

  卷就是目录或文件,存在于一个或多个容器中,由docker挂载到容器,但不属于联合文件系统,因此能够绕过Union File System提供一些用于持续存储或共享数据的特性,卷的设计目的就是数据的持久化,完全独立于容器的生存周期,因此Docker不会在容器删除时删除其挂载的数据卷。数据卷可在容器之间共享或重用数据并且卷中的更改可以直接实时生效,数据卷的生命周期一直持续到没有容器使用它为止。

云原生之docker详解
 

 

配置数据卷

docker run  ... -v 宿主机目录(文件):容器内目录(文件)...

 注意事项

  1. 目录必须是绝对路径
  2. 如果目录不存在,会自动创建
  3. 可以挂在多个数据卷
#mysql 同步数据
docker run -d -p 3310:3306 -v /www/server/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --name mysql1 mysql:5.5

2.2.6 dockerfile构建docker镜像文件

  • Dockerfile 是一个文本文件

  • 包含了一条条的指令

  • 每一条指令构建一层,基于基础镜像,最终构建出一个新的镜像

  • 对于开发人员:可以为开发团队提供一个完全一直的开发环境

  • 对于测试人员:可以直接那开发时所构建的镜像或者通过Dockerfile文件构建一个新的镜像开始工作

  • 对于运维人员:在部署时,可以实现应用的无缝移植

云原生之docker详解

 构建自己的centos镜像如下图

云原生之docker详解

 

执行dockerfile生成镜像

docker build -f dockerfile文件的路径 -t 设置新的镜像的名称和版本号 .  # 注意最后的点,代表生成的镜像路径
    -f 表示dockerfile路径
    -t 设备新镜像的名称和版本号
最后的. 表示生成镜像的路径,为当前路径

2.2.7 Docker Compose

我们使用 Docker 的时候,定义 Dockerfile 文件,然后使用 docker build、docker run 等命令操作容器。然而微服务架构的应用系统一般包含若干个微服务,每个微服务一般都会部署多个实例,如果每个微服务都要手动启停,那么效率之低,维护量之大可想而知。

Compose 是用于定义和运行多容器 Docker 应用程序的工具。通过 Compose,您可以使用 YML 文件来配置应用程序需要的所有服务。然后,使用一个命令,就可以从 YML 文件配置中创建并启动所有服务。

Compose 使用的三个步骤:

  • 使用 Dockerfile 定义应用程序的环境。
  • 使用 docker-compose.yml 定义构成应用程序的服务,这样它们可以在隔离环境中一起运行。
  • 最后,执行 docker-compose up 命令来启动并运行整个应用程序。

由于Docker Compose介绍所需要的篇幅较大,所以作者会单独写一篇Docker Compose的文章,这里进行简单的介绍。

 

云原生之docker详解

 

 

 

 

 

到了这里,关于云原生之docker详解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 云原生之docker详解

    目录 1.云原生概念 1.1 云原生定义 1.2 云原生元素 1.2.1 微服务 1.2.2 DevOps 1.2.3 持续交付 1.2.4 容器化 2. Docker 2.1 Docker概述 2.1.1 Docker 定义 2.1.2 Docker应用场景 2.1.3 Docker的架构 2.2 Docker命令 2.2.1 docker进程相关命令 2.2.2 docker镜像相关命令 2.2.3 docker容器相关命令 2.2.4 日志进程 2.2.5 数

    2024年02月07日
    浏览(28)
  • 【云原生】Docker 详解(三):Docker 镜像管理基础

    镜像可以理解为应用程序的集装箱,而 Docker 用来装卸集装箱。 Docker 镜像含有启动容器所需要的文件系统及其内容,因此,其用于创建并启动容器。 Docker 镜像采用分层构建机制,最底层为 bootfs ,其上为 rootfs 。 bootfs :用于系统引导的文件系统,包括 bootloader 和 kernel ,容

    2024年02月13日
    浏览(83)
  • Docker容器原生健康检查机制详解

    健康检查机制是用来检查服务的可用性,当服务不可用时及时重启以恢复可用性。之前的文章《Kubernetes中配置livenessProbe、readinessProbe和startupProbe》讲解了Kubernetes中的各种健康检查类型和配置方法,本篇文章讲解一下docker容器的健康检查机制。 看过上文提到的那篇文章的同学

    2024年02月02日
    浏览(49)
  • 【云原生|Docker】06-dokcerfile详解

    目录 前言 Dockerfile基础示例   Dockerfile简介 1.  Dockerfile概念  2.  Dokcer镜像分层理解 ​3.  Doker build构建原理  Dockerfile参数解析  1.  Dokcerfile组成  2.  指令说明  2.1  FROM引入基础镜像 2.2  LABEL 2.3   ENV 2.4  RUN 2.5  COPY 2.6  ADD 2.7  VOLUME  2.8  EXPOSE 2.9  WORKDIR  2.10  USER  2.1

    2023年04月10日
    浏览(33)
  • 【云原生】Docker 详解(二):Docker 架构及工作原理

    Docker 在运行时分为 Docker 引擎 (服务端守护进程) 和 客户端工具 ,我们日常使用各种 docker 命令 ,其实就是在使用 客户端工具 与 Docker 引擎 进行交互。 Docker 是一个客户端-服务器(C/S)架构程序。Docker 客户端只需要向 Docker 服务器或者守护进程发出请求,服务器或者守护

    2024年02月13日
    浏览(41)
  • 【云原生|Docker】13-Docker-compose详解

    ​ 前面我们在说Dokcer Harbor企业级仓库管理的时候,我们使用的就是docker-compose来启动相应的容器的,Docker-compose作为一款单机编排工具在工作中使用的还是非常多的;这一章我们将一起探讨下docker-compose的使用。 ​ Docker Compose是一个定义和运行多容器应用的单机编排工具。通

    2023年04月17日
    浏览(45)
  • 【云原生|Docker系列7】Docker Machine 使用详解

    Docker Machine 是负责使用 Docker 容器的第一步:在多种平台上快速安装和维护 Docker运行环境。它支持多种平台,让用户可以在很短时间内在本地或云环境中搭建一套 Docker 主机集群。本文主要学习Docker Machine项目的具体情况,以及安装和使用的相关命令。 Machine 项目是 Docker 官方

    2024年01月17日
    浏览(40)
  • docker入门概念详解

        本篇文章对docker的一些基础概念和周边概念进行了详细解释。帮助你可以很好的理解docker是用来干什么的,docker是怎么工作的。其中有docker所运用到的技术解释,docker的不同发展版本,dokcer的架构,docker的生态等等详解。希望本片文章会对你有所帮助。 文章目录 一、虚

    2024年02月03日
    浏览(37)
  • 从定义到实际应用,详解项目管理的基本概念与核心内容

    项目管理是项目的管理者,在有限的资源约束下,运用系统的观点、方法和理论,对项目涉及的全部工作进行有效地管理。项目管理的内容包括项目范围管理,是为了实现项目的目标,对项目的工作内容进行控制的管理过程。它包括范围的界定,范围的规划,范围的调整等。

    2024年02月08日
    浏览(60)
  • 【云原生】Docker 详解(一):从虚拟机到容器

    要解释清楚 Docker ,首先要解释清楚 容器 (Container)的概念。要解释容器的话,就需要从操作系统说起。操作系统太底层,细说的话一两本书都说不清楚。这里就一句话来总结一下:操作系统(Operating System,简称 OS)是管理计算机硬件与软件资源的计算机程序,并且为软件

    2024年02月13日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包