深入理解Docker-使用Docker有什么优势?

news2024/11/27 14:57:11

Docker是什么?

我们先给出Docker官网给出的定义来看下Docker是什么?

file

Docker加速你应用的构建,共享和运行。

怎么来加速的那?

  • without tedious envionment configuration or management
    不用进行哪些乏味的环境配置和管理。

怎么来理解?我觉得我们可以回想以下在没有Docker之前我们要部署我们自己的应用或者是在本地开发我们的应用是怎么来做的。

我们以本地开发为例来说明:比如你要开发一个订单服务,订单服务连接数据库MySQL8,Redis,ElasticSearch等等服务,你需要在你本地本地安装并启动这些服务,但是复杂的是你在本地搭建这些环境的时候可能会遇到各种问题并且你可能一点也不关注整个搭建过程,而只是想把它们启动起来而已。

那就用Docker呗,本地安装一个Docker引擎,然后安装一个Docker-compose,然后找根据项目的要求写一个Docker-comopose的yaml文件,使用docker-compose命令一键启动:

docker-compose.yaml

version: '3.8'

services:
  # MySQL 服务定义
  mysql:
    image: mysql:8.0
    environment:
      MYSQL_ROOT_PASSWORD: 12345678 
      MYSQL_DATABASE: test  
      MYSQL_USER: myuser             # 可选:创建一个用户
      MYSQL_PASSWORD: mypassword     # 可选:为新用户设置密码
    ports:
      - '3306:3306'
    volumes:
      - mysql_data:/var/lib/mysql
    restart: always
    command: --default-authentication-plugin=mysql_native_password

  # Redis 服务定义
  redis:
    image: redis:latest
    ports:
      - '6379:6379'
    volumes:
      - redis_data:/data
    restart: always

  # Elasticsearch 服务定义
  elasticsearch:
    image: elasticsearch:7.10.0 
    environment:
      - discovery.type=single-node 
      - ES_JAVA_OPTS=-Xms512m -Xmx512m 
    ports:
      - '9200:9200'
      - '9300:9300'
    volumes:
      - es_data:/usr/share/elasticsearch/data
    restart: always

volumes:
  mysql_data:
  redis_data:
  es_data:

COPY

Docker-compose 一键启动所有依赖的服务:

docker-compose -f docker-compose.yaml up -d

COPY

这样还是挺香的。

构建(Build)

根据Docker官网对构建维度的解释,构建提供的加速主要由以下三个方面组成:

  1. 快速创建和启动新的环境
  2. 与现有开发的工具的集成
  3. 应用在各种环境中都是保持一致的

我们分别来解析一下这三个方面。

快速创建和启动新的环境

我们先来看在实际业务开发中我们应用对各种环境的需求。

第一个需求就是我们依赖的环境,各种数据库,缓存,搜索,其他业务服务和三方服务。

第二个需求就是我们应用自身需要提供多个环境来满足不同用户的需求,比如:你的应用可能有七八个环境:local(本地开发),dev(开发环境),sit(集成环境),uat(验收环境),staging(测试环境),perf(性能测试环境),pre-prod(准生产环境),prod(生产环境)。每个环境都有需要启动我们的依赖服务软件和自身。

那么使用docker可以很快的来搭建这些环境并且很快的启动这些环境的实例。

与现有开发的工具的集成

我觉得这个可以从以下几个方面来说:

  1. Docker本身: Docker适配了主流的操作系统:Windows,Linux和Unix(MacOS),这样你在哪个环境上都可以用
  2. 开发生态: 各种开发工具,版本控制工具等都集成了Docker。比如:IDEA,VSCode,Github等等。

应用在各种环境中都是保持一致的

这个维度Docker官网给出的说明是不管你是自建的机房还是使用云上的K8S,Docker提供的应用运行环境都是一致的。

这样你可以将自建的K8S迁移云上,或者把云上的K8S迁移到自建。

共享(Share)

共享也是见名知意,就是分享我们的应用。Docker以Docker 镜像(Image)的进行存储,并可以通过一些Docker Registry来分享Docker镜像。 比较常见的比如:DockerHub, Nexus,Artifactory等等。

接下来我们也根据官网提供的三个维度来阐述Docker的共享:

  1. 使用经过验证和值得信赖的内容
  2. 团队协作更方便
  3. 私有仓库提供了更好的安全性

安全的镜像

  1. DockerHub提供了很多官方的镜像,这些镜像经过了大量的验证并且Docker团队会长期维护这些镜像,这样就确保了镜像的安全和可靠性,尤其是我们常用的哪些基础镜像

  2. 对于非官方镜像,Docker也会扫描和验证其他组织机构或者个人的镜像来保证镜像的安全。我们也不系统我们用一个带漏洞或者后门的镜像

团队协作

  1. DockerHub提供了一个镜像共享平台,我们可以很轻松的使用这些共享的镜像
  2. 我们可以直接拉去DockerHub的镜像来启动我们的环境和应用
  3. 我们也可以在DockerHub上发布自己的镜像供其他人下载和使用

私有仓库

我们自己业务系统的镜像由于公司策略和安全性合规等要求我们是不能发布我们自己的镜像到DockerHub的,所以我们需要搭建自己的私有仓库,这样我们自己的镜像就不会被公开而且更容易进行权限控制,确保了我们私有镜像的安全性。

运行(Run)

我个人觉得部署更轻松,DevOps或者运维人员感觉很快乐是Docker最重要的一个点。

  1. 不管你以前用的是CentOS,现在要切换到Ubuntu,你Docker run或者docker-compose up -d都可以一键启动
  2. 不管你是go,java,rust,python,php和你的代码工程有什么依赖,Dockerfile的FROM都可以解决
  3. CI/CD更加流畅

验证(Verify)

Docker团队会在软件安全性方面帮我们把一道关,当然我们公司也会进行二次安全检查。但是这点对于小公司或者没有能力进行二次检查的公司或者个人来讲就会特别重要,因为Docker团队已经进行了安全性把关。

参考

深入理解Docker-使用Docker有什么优势? – FOF编程网

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1556830.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

U盘无法打开?教你几招轻松解决数据恢复难题

在日常生活和工作中,U盘作为移动存储设备,承载着我们大量的重要数据。然而,当某一天我们满怀期待地将U盘插入电脑,却发现它无法被正常打开时,那种焦虑和挫败感简直让人崩溃。我们可能会尝试各种方法,如重新…

java将文件转成流文件返回给前端

环境:jdk1.8,springboot2.5.3,项目端口号:9100 1.待转换的文件 一、路径 二、文件内容 2.controller中代码 package com.example.pdf.controller;import com.example.pdf.service.GetFileStreamService; import org.springframework.web.b…

Java项目修改了代码总是不生效咋么个事

1.问题发现 自己修改了yml配置文件,然后发现重启项目访问还是原来的配置 查看target下的class文件 发现,这个值并没有变,也就是我们修改完代码其实是没有触发编译文件重新生成class的,这时候我们可以手动解决,选择m…

外包干了5天,技术退步明显.......

先说一下自己的情况,大专生,18年通过校招进入杭州某软件公司,干了接近4年的功能测试,今年年初,感觉自己不能够在这样下去了,长时间呆在一个舒适的环境会让一个人堕落! 而我已经在一个企业干了四年的功能测…

【Web】NSSCTF Round#20 Basic 个人wp

目录 前言 真亦假,假亦真 CSDN_To_PDF V1.2 前言 感谢17👴没让我爆零 真亦假,假亦真 直接getshell不行,那就一波信息搜集呗,先开dirsearch扫一下 扫的过程中先试试常规的robots.txt,www.zip,shell.phps,.git,.sv…

笔迹/签名数据集汇总

这里只收集公开/易申请的数据集 数据集发表年份语言最小单元Writers/人规模颜色最小单元文件格式示例图片备注CSAFE Handwriting Database2019英语页9090 人*(3 次*9 个样本) 2430 页300 dpi 扫描png-HWDB2.0-2.22011汉字页1,019每人 5 页,共 5091 页灰度图dgrl-CEDAR2006英语…

【Java面试题】Redis中篇(高可用:主从复制、哨兵、集群)

文章目录 高可用14.Redis如何保证高可用?15.Redis的主从复制?16.Redis主从有几种常见的拓扑结构?17.Redis的主从复制原理了解吗?18.说说主从数据同步的方式?19.主从复制存在的问题?20.Redis Sentinel(哨兵)…

ATFX汇市:欧元区的2月M1增速为-7.7%,潜在通胀下修,欧元币值受冲击

ATFX汇市:衡量经济体的潜在通胀指标,除了CPI数据、失业率数据外,还有M1、M3数据。昨日,欧洲央行公布了2月份欧元区货币发展报告,其中提到:广义货币总量M3的年增长率从1月份的0.1%上升到2024年2月的0.4%&…

多线程JUC 第2季 synchornized和Lock锁(重入,公平)

一 锁 1.1 锁的介绍 synchronized,和lock锁都是一种悲观锁。悲观锁适用于写多场景,乐观锁适用于读多场景,实现策略有:版本号和cas自旋算法。

ubuntu22.04@Jetson Orin Nano安装配置VNC服务端

ubuntu22.04Jetson Orin Nano安装&配置VNC服务端 1. 源由2. 环境3. VNC安装Step 1: update and install xserver-xorg-video-dummyStep 2: Create config for dummy virtual displayStep3: Add the following contents in xorg.conf.dummyStep 4: Update /etc/X11/xorg.con…

CQ 社区版2.10.0 | 新增 SQL 审核、全新英文版上线…

三月中旬,我们预告了 CloudQuery 社区版即将上线的「SQL 审核」功能。现在,它来了! 本次社区版 v2.10.0,除了 SQL 审核功能,我们还在手动授权、连接分组等模块做了新功能和优化。 新增功能 新增 SQL 审核功能 支持…

【STM32嵌入式系统设计与开发】——13WWDG(窗口看门狗应用)

这里写目录标题 一、任务描述二、任务实施1、WWDG工程文件夹创建2、函数编辑(1)主函数编辑(2)USART1初始化函数(usart1_init())(3)USART数据发送函数( USART1_Send_Data(&#xff09…

访学博后须知|携带手机等电子产品入境美国注意事项

美国对携带手机等电子产品入境有着严格的规定,因此知识人网小编提醒拟出国做访问学者、博士后或联合培养的博士生了解以下注意事项,尽量减少不必要的麻烦。 随着互联网的普及,手机等电子产品在人民生活中占有不可或缺的地位。因为研究和工作需…

LInux: fork()究竟是如何工作的?为何一个变量能够接受两个返回值?

LInux: fork函数究竟是如何工作的?为何一个变量能够接受两个返回值? 前言一、fork()用法二 、fork()应用实例展示三、fork()工作原理3.1 为什么要创建子进程?3.2 fork()究竟干了些什么?3.3 fork为什么会存在两个返回值&#xff1f…

opengl草稿复习,承上启下(一)

目录 1、链接文件夹中的cpp 2、链接资源到输出目录 3、多编译目标 4、cmakelist添加库 4、添加glfw和glad 5、glfw运行 6、NDC、VBO、VAO 7、渐变三角形 8、渲染两个三角形 9、渲染两个三角形,同时基于原来颜色进行渐变 10、三角形渲染模块化 11、纹理渲…

深度学习中的模型蒸馏技术:实现流程、作用及实践案例

在深度学习领域,模型压缩与部署是一项重要的研究课题,而模型蒸馏便是其中一种有效的方法。 模型蒸馏(Model Distillation)最初由Hinton等人在2015年提出,其核心思想是通过知识迁移的方式,将一个复杂的大模型…

适合新手小白的wordpress详细安装教程

1、下载程序 到wordpress官方网站下载wordpress程序,官方下载地址:Download | WordPress.org China 简体中文。 下载最新版的wordpress程序 https://cn.wordpress.org/latest-zh_CN.zip 2、上传程序 上传程序前先确认主机是否符合安装的环境要求&…

javaWeb项目-学生考勤管理系统功能介绍

项目关键技术 开发工具:IDEA 、Eclipse 编程语言: Java 数据库: MySQL5.7 框架:ssm、Springboot 前端:Vue、ElementUI 关键技术:springboot、SSM、vue、MYSQL、MAVEN 数据库工具:Navicat、SQLyog 1、JAVA技术 JavaSc…

PS从入门到精通视频各类教程整理全集,包含素材、作业等(3)

PS从入门到精通视频各类教程整理全集,包含素材、作业等 最新PS以及插件合集,可在我以往文章中找到 由于阿里云盘有分享次受限制和文件大小限制,今天先分享到这里,后续持续更新 中级教程 https://www.alipan.com/s/unii5YxtM8B 提…

【JavaEE初阶系列】——多线程案例三——定时器

目录 🚩定时器是什么 🚩标准库中的定时器 🚩自定义定时器 🎈构造Task类 📝相对时间和绝对时间 🎈构造MyTime类 📝队列空和队列不为空 📝wait(带参)解决消耗资源问题 &#…