docker:理解docker镜像与容器

cubemen cubemen     2023-04-21     173

关键词:

一、镜像的概念

  1、广泛镜像概念:

    镜像是一种文件存储形式,是冗余的一种类型,一个磁盘上的数据在另一个磁盘上存在完全相同的副本即为镜像。

  2、Docker镜像概念:

    在Docker中镜像同样是一种完全相同的副本,以广泛的镜像来理解就很简单了,Docker虽然在Linux系统中,但是内部又完全和Linux系统隔开。所以我们可用Docker来将自己的项目构建成镜像。相当于把自己的项目代码复制一份到Docker系统里。

二、如何解决项目运行时所需的生产环境

  问题很快产生,在Linux中已经安装好的运行环境。使得我们项目可以正常运行,但是去到一个新系统中。项目那些生产环境岂不是需要重新安装。而重新安装又很麻烦。所以Docker对于这个处理就是可以用多个镜像叠加在一起。如下图:

技术图片

技术图片

 

   可看见镜像是分层的,及上面一层依赖着下面的镜像来运行。举个例子:我们需要部署Java项目在Docker上,我们需要先从Docker中拉取jdk的镜像作为基础的镜像,有了这个镜像那么Java项目就可进行编译及运行了。所以Docker中的镜像分层的概念可以理解为是在Linux系统中安装对应的生产环境。而且DockerHub中同样具有很全的镜像,包括Ubuntu的镜像与centos镜像同样存在。但是重点在于镜像是只读的。我们能写入的只有容器。

三、静态容器

  对于静态容器的定义和镜像几乎一模一样,同样是一堆层的统一视角,唯一区别是在于容器最上面那一层是可读可写的。可以理解为我们的项目基于下面运行环境搭建起来的镜像并为它覆盖上一层读写层,使得我们可以进入修改文件。即容器=镜像+读写层。这里需要注意的是容器的定义并没有说容器是否在运行。也就是容器可以运行也可以暂停。

技术图片

 

 

四、运行中的容器

  在运行态中的容器被定义为一个可读写的统一文件系统加上隔离的进程空间和包含其中的进程。如下图:

技术图片

技术图片

  Docker拥有文件隔离技术与进程隔离技术。在运行态的容器,可通过shell进入bash系统,内部的进程与文件都是较外部系统独立存在的,可通过读写层进行修改内部文件

五、理解Dokcer中build命令

  在Docker中build是用来创建镜像的命令,通常我们会使用Dockerfile来创建镜像,而每次Dockerfile文件开头总是会有FROM字段。结合上面我们所说镜像是多层的来看,FROM就是底层镜像,而我们当前需要build的镜像需要以该镜像作为基础。镜像的关键在于可不停叠加镜像,直到我们把所需要的生产环境都部署好,再进行构建我们项目的镜像即可。

六、理解Docker中create,start,run三种命令

  1、create

    docker create <image-id>命令可以理解为为指定镜像添加一个读写层,就构成了容器,正如上面所说容器=镜像+读写层。但此时容器并未运行起来。如下图

技术图片

 

   2、start

    docker start <container-id>命令是为容器的文件系统创建了一个进程隔离空间,注意:每个容器只能有一个进程隔离空间,因为进程隔离所以外部的信息访问不到内部的,这时候就需要端口映射,将容器内的正在运行端口映射到外部Linux系统上。这样就可以通过访问Linux的端口从而访问到Docker中。这个端口通常是我们项目接受请求的端口,比如MySQL要运行在Docker上需要映射3306端口等。这时候容器是属于运行起来了的状态。项目可以正常接收请求和发布请求了。

  3、run

    docker run <image-id>这个命令相当于create+start,即如下图:

技术图片

 

七、总结

  上面的概念已经揭开Docker最神秘的面纱。让我们知道Docker内部是一个什么情况。为什么需要构建镜像,容器运行时为什么要暴露端口等等一些最基础的问题。而Docker技术现在也已经成为微服务架构时代最主流的部署方式,后面我们还会讲如何编排服务。使得服务之间能正常通讯与运行。

 

    

 

 

 

 

  

 

docker:理解docker镜像与容器

...在另一个磁盘上存在完全相同的副本即为镜像。  2、Docker镜像概念:    在Docker中镜像同样是一种完全相同的副本,以广泛的镜像来理解就很简单了,Docker虽然在Linux系统中,但是内部又完全和Linux系统隔开。所以我们可... 查看详情

docker架构与原理(代码片段)

注个人理解:docker的镜像是位于最底层,但使用宿主主机的操作系统内核,我们可以看到docker的镜像十分的小,原因是docker镜像只是一些环境的配置,所以十分的小,他是只能读不能写的。docker的容器是依赖与... 查看详情

docker镜像原理学习理解(代码片段)

Docker镜像原理学习理解一、Docker镜像的组成1.Docker镜像图层2.unionfilesystem3.镜像层-bootfs4.镜像层-rootfs5.镜像层-依赖环境6.容器层二、docker镜像小结三、进入容器空间四、定义容器镜像五、容器层介绍一、Docker镜像的组成1.Docker镜像... 查看详情

10张图带你深入理解docker容器和镜像

图解Docker容器和镜像 这篇文章希望能够帮助读者深入理解Docker的命令,还有容器(container)和镜像(image)之间的区别,并深入探讨容器和运行中的容器之间的区别。当我对Docker技术还是一知半解的时候,我发现理解Docker的... 查看详情

理解docker:docker镜像

本系列文章将介绍Docker的有关知识:(1)Docker安装及基本用法(2)Docker镜像(3)Docker容器的隔离性(4)Docker容器的网络(5)Docker容器的存储  对于每个软件,除了它自身的代码以外,它的运行还需要有一个运行环境和... 查看详情

深刻理解docker镜像大小

都说容器大法好,可是假设没有Docker镜像,Docker该是多无趣啊。是否还记得第一个接触Docker的时候,你从DockerHub下拉的那个镜像呢?在那个处女镜像的基础上。你执行了容器生涯的处女容器。镜像的基石作用已经非常明显。在Doc... 查看详情

docker容器和镜像区别

docker容器和镜像区别 这篇文章希望能够帮助读者深入理解Docker的命令,还有容器(container)和镜像(image)之间的区别,并深入探讨容器和运行中的容器之间的区别。 当我对Docker技术还是一知半解的时候,我发现理解Dock... 查看详情

docker镜像与docker容器的区别

...像的容器。您可以拥有许多相同镜像的正在运行的容器。dockerimages查看所有镜像dockerps查看正在运行的容器dockerps-a查看所有容器一个镜像的运行实例就是一个容器。参考:https://stackoverflow.com/questions/23735149/what-is-the 查看详情

10张图带你深入理解docker容器和镜像

...的话】本文用图文并茂的方式介绍了容器、镜像的区别和Docker每个命令后面的技术细节,能够很好的帮助读者深入理解Docker。这篇文章希望能够帮助读者深入理解Docker的命令,还有容器(container)和镜像(image... 查看详情

docker容器和镜像区别

这篇文章希望能够帮助读者深入理解Docker的命令,还有容器(container)和镜像(image)之间的区别,并深入探讨容器和运行中的容器之间的区别。 当我对Docker技术还是一知半解的时候,我发现理解Docker的命令非常困难。于是... 查看详情

docker深入浅出系列|容器初体验(代码片段)

原文:Docker深入浅出系列|容器初体验目录Docker深入浅出系列|容器初体验教程目标预备工作容器与虚拟化技术什么是Docker为什么要用Docker事例什么是容器镜像和容器容器与虚拟机的区别Vagrant与Docker的区别Docker引擎和架构Docker的镜... 查看详情

docker的概述与(安装|镜像|容器)(代码片段)

文章目录Docker概述Docker与虚拟机的区别容器为什越来越受欢迎容器与虚拟机的比较Docker核心概念安装Docker服务安装依赖包设置阿里云镜像源安装Docker-CE并设置为开机自动启动Docker镜像操作搜索镜像获取镜像镜像加速下载查看镜像... 查看详情

docker的概述与(安装|镜像|容器)(代码片段)

文章目录Docker概述Docker与虚拟机的区别容器为什越来越受欢迎容器与虚拟机的比较Docker核心概念安装Docker服务安装依赖包设置阿里云镜像源安装Docker-CE并设置为开机自动启动Docker镜像操作搜索镜像获取镜像镜像加速下载查看镜像... 查看详情

docker镜像与容器

docker镜像与容器docker改变了什么?面向产品:产品交付面向开发:简化环境配置面向测试:多版本测试面向运维:环境一致性面向架构:自动化扩容(微服务) 获取镜像可以使用dockerpull命令来从仓库获取所需要的镜像。[[ema... 查看详情

docker第二天:管理docker镜像与容器(下)

...令:1、了解镜像的制作过程[[email protected] ~]# docker history centos2、了解镜底层信息[[email protected] ~]# docker inspect centos查看某一具体项信息 查看详情

docker操作系统理解(代码片段)

Docker操作系统理解一、操作系统介绍1.操作系统定义2.操作系统理解3.内核作用4.容器操作系统二、使用容器运行不同发行版的linux系统1.下载容器镜像2.查看下载好的本地容器镜像3.进入不同操作系统的容器空间三、检查运行的容... 查看详情

docker简述与安装(代码片段)

一、Docker简述  Docker是一个应用程序开发、部署、运行的平台,使用go语言开发。相较于传统的主机虚拟化,Docker提供了轻量级的应用隔离方案,并且为我们提供了应用程序快速扩容、缩容的能力。“一次封装,到处运行&rd... 查看详情

docker中的镜像与容器

docker的整个生命周期有三部分组成:镜像(image)+容器(container)+仓库(repository);容器是由镜像实例化而来,这和我们学习的面向对象的概念十分相似,我们可以把镜像看作类,把容器看作类实例化后的对象。docker的镜像概... 查看详情