Docker大学生看了都会系列(一、Docker介绍)

系列文章目录
第一章 Docker介绍
第二章 2.1 Mac通过Homebrew安装Docker
第二章 2.2 CentOS安装Docker


文章目录

  • 前言
  • Docker容器简介
    • 什么是Docker容器
    • 为什么要用Docker容器
    • Docker容器的特性
    • Docker容器对比VM(虚拟机)
    • Docker容器三大组成要素
      • 镜像
      • 容器
      • 镜像仓库
    • Docker容器运行流程
  • 总结


前言

后端开发过程中,不管是JAVA开发工程师、Go开发工程师,PHP开发工程师等等..学会Docker可以减少部署发布很多时间。接下来,我们看看它是什么,并且如何使用。

Docker容器简介

什么是Docker容器

在官方定义中,Docker是一种轻量级的虚拟化技术,同时是一个开源的应用容器运行环境搭建平台,可以让开发者以便捷方式打包应用到一个可移植的容器中,然后安装至任何运行LinuxWindows等系统的服务器上。相较于传统虚拟机,Docker容器提供轻量化的虚拟化方式、安装便捷、启停速度快。

docker官网:https://www.docker.com
docker中文库:https://www.docker.org.cn

为什么要用Docker容器

主要当前开发环境讲起,原因为以下3点:

软件更新发布及部署低效,过程繁琐且需要人工介入
环境一致性难以保证
不同环境之间迁移成本太高

有了Docker容器之后,以上的问题,都得到了改善。这也得益于它的特性。

Docker容器的特性

  • 简化配置,即同一个Docker配置能在在不同的操作系统下使用
  • 代码流水线管理,即提供了从开发到上线的一致环境的同时,减少了很多中间环节
  • 提高开发效率,即能快速搭建开发环境的同时,让开发环境贴近生产环境
  • 隔离应用,即每个应用相互独立,互不影响
  • 整合服务器,即减少服务器内存占用,降低服务器成本
  • 多租户环境,即一个使用场景是在多租户的应用中,它可以避免关键应用的重写
  • 快速部署,即自动化部署更新。

总结就是:构建容易分发简单,隔离应用解除依赖,快速部署测完就销

Docker容器对比VM(虚拟机)

Docker容器与传统的VM虚拟机实现技术逻辑不同

操作系统实现逻辑
VM使用Hypervisor提供虚拟机的运行平台,管理每个VM中操作系统的运行。每个VM都要有自己的操作系统、应用程序和必要的依赖文件等
Docker容器使用Docker引擎进行调度和隔离,提高了资源利用率,在相同硬件能力下可以运行更多的容器实例;每个容器拥有自己的隔离化用户空间

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

Docker容器三大组成要素

要了解Docker容器,首先是要了解其中三大组成要素的概念

镜像

Docker镜像是一个特殊的文件系统,除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的配置参数。 镜像不包含任何动态数据,其内容在构建之后也不会被改变。镜像可以用来创建Docker容器,用户可以使用设备上已有的镜像来安装多个相同的Docker容器

容器

镜像创建的运行实例,Docker利用容器来运行应用。每个容器都是相互隔离的、保证安全的平台。我们可以把容器看做是一个轻量级的Linux运行环境。

镜像仓库

集中存放镜像文件的地方。用户创建完镜像后,可以将其上传到公共仓库或者私有仓库,需要在另一台主机上使用该镜像时,只需要从仓库上下载即可。

Docker容器运行流程

请添加图片描述

  • Docker构建镜像到镜像仓库
  • Docker拉取镜像仓库到本地
  • Docker启动容器实例

总结

通过本文,了解Docker容器是一种轻量级的虚拟化技术Docker容器构建容易分发简单,隔离应用解除依赖,快速部署测完就销。相比传统VM虚拟机占用内存更小,启动更快。了解了三大组成要素,镜像仓库,镜像,容器。了解了它的运行流程。
完成ヾ(◍°∇°◍)ノ゙

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

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

相关文章

gradle构建项目简单入门

gradleProject 搭建gradle项目步骤 官网文档地址:https://docs.gradle.org/current/userguide/userguide.html Getting Started 1.Gradle核心内容 1.Gradle介绍 Project:类似模块划分Build Scripts:构建ProjectDependency Management&…

多线程新手村5--线程池

1.1 线程池是什么 线程诞生的意义是因为进程的创建/销毁开销太大,所以使用线程提高代码的执行效率;那如果想要进一步提升执行效率,该怎么办呢?有一个方法是使用线程池。 首先,什么是线程池:池就是池子&am…

Vue——样式绑定的几种方式

文章目录 前言往期回顾绑定对象绑定对象的另一种写法绑定数组数组与对象的嵌套 前言 样式绑定在vue中属于一种很常见的操作。在之前博客中针对样式的绑定操作,介绍了一个指令v-bind。缩写为:xxx。 vue 官网 样式绑定 往期回顾 先简单回顾下最开始绑定标签样式的操…

vue3_组件间通信方式

目录 一、父子通信 1.父传子( defineProps) 2.父传子(useAttrs) 3.子传父(ref,defineExpose ) 4.子传父(defineEmits) 5.子传父(v-model) …

车载测试面试题专题 - 如何测试蓝牙电话功能

现代车载系统中,蓝牙电话功能已经成为了一个必不可少的功能。它不仅提高了驾驶安全性,还提供了极大的便利性。作为车载行业的测试人员,如何全面、有效地测试车载蓝牙电话功能是我们工作的重要部分。因此在车载测试的面试过程中,蓝…

k8s怎么监听自定义资源的变更?(1)

这里我们通过 k8s的 code-generate来生成操作自定义资源的代码来监听变更 第一步下载工具 下载安装 k8s code-generate 查看我们的k8s版本 kubectl get node 输出结果为 可以看到我们的k8s版本为 v1.22.0 所以此时我们要下载与之对应的版本的code-generate git clone htt…

linux配置jupyternotebook

linux配置jupyternotebook 在Linux系统中配置Jupyter Notebook涉及多个步骤,包括安装pip、升级pip、安装Jupyter、修改配置文件以及设置密码等。以下是一个详细的配置过程: 安装pip:Linux系统自带Python,因此只需安装pip即可。可…

Pytorch实用教程:super(MLP,self).__init__()和super().__init__()有什么区别?

在 Python 中,super() 函数用于调用父类(超类)的方法。它的使用在继承关系中非常常见,特别是在初始化继承自父类的属性时。在 PyTorch 中,这通常见于初始化 nn.Module 类的子类。super() 的两种调用方式有微妙的差别,但在 Python 3 中常常用来达到同样的目的。 代码: …

深入解析 Web 开发中的强缓存与协商缓存机制

在 Web 开发中,缓存机制是提高页面加载速度和用户体验的重要技术。缓存分为两种主要类型:强缓存和协商缓存。本文将详细介绍这两种缓存机制的原理、实现方式及其区别,并演示如何在 <meta> 元素中和 Nginx 服务器中进行缓存控制。 强缓存 强缓存(Strong Caching)是指…

iPhone的5G设置怎么更改吗?设置好这些能够优化电池的使用寿命

随着5G技术的普及&#xff0c;iPhone用户现在可以享受到更快的网络速度&#xff0c;但这同时也带来了一个问题&#xff1a;如何在使用5G和保持电池寿命之间找到平衡&#xff1f;苹果公司通过引入“5G Auto”设置&#xff0c;为用户提供了一个智能的解决方案&#xff0c;但用户也…

【JAVA WEB实用与优化技巧】如何使用本地.bat/.sh脚本快速将服务发布到测试环境?

文章目录 普通方式的springboot 使用docker打包发布【手动构建镜像模式】1. maven 打包可运行jar包2.手动打包镜像3.运行容器 全自动化本地命令发布到远程服务的方式配置ssh信任公钥获取公钥git 获取公钥方式: 桌面右键 -> open git gui here -> help -> show SSH key…

Honor of Kings 2024.06.03 50star (S35) AFK

Honor of Kings 2024.06.03 50star (S35) AFK 来个赛季S35总结吧&#xff0c;这个赛季结束以后&#xff0c;可能要和【魔兽世界】一样AFK了&#xff0c;手游来说肯定没法子和WOW相比&#xff0c;干啥都是有队友才好玩。 我玩的基本都是肉&#xff0c;爆发强的英雄&#xff0c;最…

llama-factory微调大模型

一、背景 微调或者全量调大语言模型&#xff0c;还包括deepseek,想找个快速的微调教程&#xff0c;网上暂时没有 二、原理和步骤 原理&#xff1a;搭建环境太累了&#xff0c;还是docker环境镜像简单快捷 1、先下载模型 如果用本身的会自动从huggingface下载&#xff0c;这…

函数尾调用优化

尾调用 在编码过程中&#xff0c;经常涉及到函数调用函数&#xff0c;例如&#xff1a; function a() {b(); }function b() {}我们每次调用函数&#xff0c;都会在在内存中记录一个“调用帧”又成为“栈帧空间” 在上述例子中&#xff0c;调用a()函数&#xff0c;会在内存中记…

解决JSON.stringify 方法在序列化 BigInt 类型时的错误

今天学nest时&#xff0c;使用apifox发送请求获取数据&#xff0c;结果还一直报错&#xff0c;而且还是我从未见过的 Do not know how to serialize a BigInt at JSON.stringify (<anonymous>) at stringify&#xff0c; 我都是跟着人家敲的&#xff0c;我就纳闷了&…

vector的使用和实现

目录 一、vector的常用接口说明1.vector的介绍2.vector的使用2.1 vector的定义2.2 vector的遍历operator[ ]迭代器范围for 2.3 vector的空间增长问题size和capacityreserveresize 2.4 vector的增删查改push_back和pop_backinserterasefindsort vector的模拟实现1、基本成员变量…

代码随想录算法训练营第四十八天| km57. 爬楼梯、322. 零钱兑换、279.完全平方数

代码随想录算法训练营第四十八天 km57. 爬楼梯 题目链接&#xff1a;km57. 爬楼梯 确定dp数组以及下标的含义&#xff1a;j为背包的最大容量&#xff0c;dp[j]当容量为j有几种组合方式确定递推公式&#xff1a;dp[j]dp[j]dp[j-i]&#xff0c;不放当前数字组成目标值的种类必…

Linux基础操作——文件系统+find+head+tail

Linux基础操作——文件系统findheadtail 本文主要涉及LINUX的一些基础操作&#xff0c;文件系统与find命令head和tail命令 文章目录 Linux基础操作——文件系统findheadtail一、Linux下的文件类型二、ls -l 后各列的解释三、 find 查找四、 head 与 tail 查看文件的头部尾部 一…

Nginx Rewrite

Nginx Rerite概述 Nginx Rerite基本操作 location与rewrite的区别 location 通过前缀或正则匹配用户的URL访问路径做页面跳转、访问控制和代理转发 rewrite 对用户的URL访问路径进行重写&#xff0c;再重定向跳转访问重写的路径 Nginx正则表达式 校验数字的表达式 数字&a…

家宽动态公网IP,使用docker+ddns 实现动态域名解析

官方地址&#xff1a;https://github.com/jeessy2/ddns-go 安装docker docker pull jeessy/ddns-godocker run -d --name ddns-go --restartalways --nethost -v /opt/ddns-go:/root jeessy/ddns-go然后访问ip端口 配置时注意如下