什么是Docker

容器技术和虚拟机

虚拟机

和一个单纯的应用程序相比,操作系统是一个很重的程序,刚装好的系统还什么都没有部署,单纯的操作系统其磁盘占用至少几十G起步,内存要几个G起步。

在这台机器上开启三个虚拟机,每个虚拟机上部署一个应用,其中VM1占用2G内存,VM2占用1G内存,VM3占用了4G内存。可以看到虚拟本身就占据了总共7G内存,因此没有办法划分出更多虚拟机从而部署更多的应用程序,可是我们部署的是应用程序,要用的也是应用程序而不是操作系统。

还有一个问题,操作系统比较重,启动时间相比比较缓慢。

容器技术

与虚拟机通过操作系统实现隔离不同,容器技术只隔离应用程序的运行时环境但容器之间可以共享同一个操作系统,这里的运行时环境指的是程序运行依赖的各种库以及配置。

 容器技术的目的:

  • 应用之间相互隔离
  • 构建一次,导出运行
  • 轻量级,占用资源少,快速部署

什么是docker

docker是一个用Go语言实现的开源项目,可以让我们方便的创建和使用容器,docker将程序以及程序所有的依赖都打包到docker container,这样程序可以在任何环境都会有一致的表现。

使用docker

docker中有这样几个概念:

  • dockerfile

  • image

  • container

构建docker image需要编写dockerfile,可以简单的把image理解为可执行程序,container就是运行起来的进程。

只需要在dockerfile中指定需要哪些程序、依赖什么样的配置,之后把dockerfile交给“编译器”docker进行“编译”,也就是docker build命令,生成的可执行程序就是image,之后就可以运行这个image了,这就是docker run命令,image运行起来后就是docker container。

docker的工作流程

docker build

当写完dockerfile交给docker“编译”时使用这个命令,那么client在接收到请求后转发给docker daemon,接着docker daemon根据dockerfile创建出“可执行程序”image。

docker run

有了“可执行程序”image后就可以运行程序了,接下来使用命令docker run,docker daemon接收到该命令后找到具体的image,然后加载到内存开始执行,image执行起来就是所谓的container。

 

 docker pull

docker registry 可以用来存放各种image,可以使用docker pull命令从公共仓库docker Hub下载docker image

 

 

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

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

相关文章

FFmpeg5.0源码阅读—— avcodec_send_packetavcodec_receive_frame

摘要:本文主要描述了FFmpeg中用于解码的接口的具体调用流程,详细描述了该接口被调用时所作的具体工作。   关键字:ffmpeg、avcodec_send_packet、avcodec_receive_frame   读者须知:读者需要了解FFmpeg的基本使用流程&#xf…

Day48|198.打家劫舍、 213.打家劫舍II 、 337.打家劫舍III

198.打家劫舍 1.题目: 你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警…

UART串口收发数据

uart4.h ubuntuubuntu:05_uart$ cat include/uart4.h #ifndef __UART_H__ #define __UART_H__//初始化相关操作 void hal_uart4_init();//发送一个字符 void hal_put_char(const char str);//发送一个字符串 void hal_put_string(const char* string);//接收一个字符 char h…

如何在没有软件的情况下将 PDF 转换为 PPT(100% 免费)

演示文稿由文字、图片、音频、动画等元素组成,通常用于会议、课堂或演讲中,展示演讲者想要表达的主要内容。如果您遇到重要文档以 PDF 格式存储,但现在需要转换为 PPT 格式的情况,请不要担心。我们本指南的目标是帮助用户将 PDF 转…

一起学SF框架系列5.7-模块Beans-BeanDefinition解析

开发人员按元数据规则定义了应用bean,了解SF如何根据定义解析成BeanDefiniton有助于深入理解框架实现。解析过程如下: 资源加载 从资源文件加载bean的元数据配置,实际过程如下图: 实际从指定的XML文件加载bean定义是从XmlBeanD…

Spring系列2 -- Spring的创建和使用

Spring 就是⼀个包含了众多工具方法的 IOC容器。既然是容器那么它就具备两个最基本的功能: 将对象存储到容器(Spring)中;从容器中将对象取出来。 在Java中对象也叫做Bean,后续我们就把对象称之为Bean; 目录…

4.5 x64dbg 探索钩子劫持技术

钩子劫持技术是计算机编程中的一种技术,它们可以让开发者拦截系统函数或应用程序函数的调用,并在函数调用前或调用后执行自定义代码,钩子劫持技术通常用于病毒和恶意软件,也可以让开发者扩展或修改系统函数的功能,从而…

ARM64学习笔记---建立异常向量表(二)

源码: #include "mm.h" #include "sysregs.h".section .rodata .align 3 .globl el_string1 el_string1:.string "Booting at EL".section ".text.boot" .globl _start _start://读取mpidr_el1寄存器的值,该寄存器决定了…

高级运维开发工程师带你处理linux木马(挖矿病毒)实战例子

一、事态描述 centos7测试服务器,突然密码登不上去了,然后CPU占100%。已经猜到,登录密码过于简单,密码被破解挂马了。大概率是CPU挖矿病毒。 二、重置centos7登录root密码 步骤1 启动Linux Centos7系统,当出现如下画…

DevOps系列文章 之 Java使用jgit管理git仓库

最近设计基于gitops新的CICD方案,需要通过java读写git仓库,这里简单记录下。 在jgit中,存在最核心的三个组件:Git类,Repository类。Git类中包含了push commit之类的常见git操作,而Repository则实现了仓库的初始化和基…

使用黑盒测试在 Go 中重写 Bash 脚本

目录 前言: 开始 准备工作 描述行为:Bats 简介 行为描述:陷阱 描述行为:设计测试 重写:让我们开始用go吧! 重构和更新:实现胜利 结论 前言: 使用黑盒测试在Go中重写Bash脚本…

百度--搜索引擎是怎么实现的--如何制作一个搜索浏览器

1.搜索引擎是怎么实现的? 搜索引擎是通过以下步骤实现的: 网页抓取(Crawling):搜索引擎会使用网络爬虫(Web Crawler)自动地从互联网上抓取网页内容。爬虫按照一定的规则遍历网页并提取网页内容…