(五)Docker镜像管理1之镜像和容器的区别

之所以在之前没有讲什么是镜像和容器是因为如果你没有一个最初的认识,那么你就很难理解镜像和容器以及它们的区别。我相信在前面一章中的讲述中,你应该稍有体会容器是基于镜像构建的,同时构建了容器之后如果不删除就会一直存在,而且我们下载的镜像还可以继续构建更多容器。构建容器并不是把镜像放进容器里,而是容器基于这个镜像产生,容器体积很小,镜像会大一点,你就算本地没有镜像也可以运行容器,因为它会从HUB中下载。在容器中的所有的修改都不会影响镜像。

先用通俗易懂但是不太严谨的例子说明一下,我们用光盘镜像安装一台虚拟机,那个镜像是只读的,这一点和Docker的镜像一样,安装操作系统的过程就可以想象成用镜像构建一个容器。这里不要去拿原理对号入座,而是只要想象一下这个过程,因为毕竟底层不是一个东西。容器就类似装好的电脑,可以让你去操作,也可以写入数据,安装软件、配置网络环境等等,同时也可以保存你修改的数据。从上面这个描述来看和普通的虚拟机也没有区别,大体上你可以这么理解。不过你要知道,安装操作系统镜像会展开到磁盘上,运行容器的话镜像则不会。

顺便提一下,Docker上面的容器是共享宿主机内核的,普通虚拟化的虚拟机是独享内核的。

上面你有了对镜像和容器的大体认识,下面我们来说一下镜像和容器的具体内容。

镜像:

镜像是由文件系统叠加组成的,最底层是一个引导文件系统(bootfs),用户不会和这个文件系统有什么交集,当容器启动以后容器会被移动到内存中,这个引导文件系统就会被卸载。

镜像的第二层是root文件系统(rootfs),这个文件系统可以是一种或多种操作系统。在正常的Linux系统中rootfs只有在引导的时候是只读的,当系统启动以后它就是读写的,而在Dokcer里镜像root文件系统都是只读的,而且一般会有多个只读的rootfs文件系统,这是通过联合文件系统实现的。

也就是说镜像是由一堆的只读层组成的。任何人都可以基于现有镜像再封装一个只读层上去。下层只读层是上层的只读层的父镜像,但是最底层的镜像叫做基础镜像。

时间: 2024-10-24 11:36:40

(五)Docker镜像管理1之镜像和容器的区别的相关文章

(五)Docker镜像管理1之镜像操作

这篇文章将介绍镜像的一般操作,包括查看.查找.下载.删除等. 下载镜像 使用下面的命令来下载镜像 docker pull 镜像名称或者镜像名称:标签 列出本地镜像 使用下面的命令来列出本地镜像 docker images 查看镜像内部的层 使用下面的命令来查看镜像内部的封装层 docker history 镜像ID或者名称:标签 这里面展示此镜像封装中的所有层以及每层执行的什么操作. 查找HUB中的镜像 使用下面的命令查找HUB中的镜像 docker search 关键字 这里搜索出来的就是HU

Docker容器——镜像管理,端口映射,容器互联

docker镜像的分层  Dockerfile 中的每个指令都会创建一个新的镜像层: 镜像层将会被缓存和复用: 当 Dockerfile 的指令修改了,复制的文件变化了,或者构建镜像时指定的变量不同了,对应的镜像层缓存就会失效: 某一层的镜像缓存失效之后,它之后的镜像层缓存都会失效: 镜像层是不变的,如果在某一层中添加一个文件,然后在下一层中删除它,则镜像中依然包含该文件 docker镜像 是应用发布的标准格式 可支撑一个docker容器的运行 docker镜像的创建方法 基于已有镜像创建 基于

Docker容器之镜像管理、端口映射、容器互联

docker镜像的分层 ?Dockerfile 中的每个指令都会创建一个新的镜像层:?镜像层将会被缓存和复用:?当 Dockerfile 的指令修改了,复制的文件变化了,或者构建镜像时指定的变量不同了,对应的镜像层缓存就会失效:?某一层的镜像缓存失效之后,它之后的镜像层缓存都会失效:?镜像层是不变的,如果在某一层中添加一个文件,然后在下一层中删除它,则镜像中依然包含该文件 docker镜像 是应用发布的标准格式可支撑一个docker容器的运行 docker镜像的创建方法 基于已有镜像创建基于本地

Docker容器之镜像管理,端口映射,容器互联

docker镜像的分层 Dockerfile 中的每个指令都会创建一个新的镜像层: 镜像层将会被缓存和复用: 当 Dockerfile 的指令修改了,复制的文件变化了,或者构建镜像时指定的变量不同了,对应的镜像层缓存就会失效: 某一层的镜像缓存失效之后,它之后的镜像层缓存都会失效: 镜像层是不变的,如果在某一层中添加一个文件,然后在下一层中删除它,则镜像中依然包含该文件 docker镜像 是应用发布的标准格式 可支撑一个docker容器的运行 docker镜像的创建方法 基于已有镜像创建 基于本

docker使用管理

容器生命周期 docker命令获取帮助 docker的常用命令 docker基本操作 镜像管理 容器生命周期运行容器一个实例:#docker run -it --rm --name bbox busybox:latest /bin/sh当运行这条指令后的执行流程步骤:1.检查本地是否存在指定的镜像,不存在则从registry下载:2.利用镜像启动容器3.分配一个文件系统,并且在只读的镜像层之外挂载一个可读写层:4.从宿主机配置的网桥接口桥接一个虚拟接口给此容器:5.从地址池中分配一个地址给容器:

Docker安装与镜像管理(一)

一.安装docker yum install epel-resase yum install docker-io  (RHEL6) yum install docker (RHEL7) 系统: [[email protected] ~]# uname -a Linux kvm.huangming.org 2.6.32-573.el6.x86_64 #1 SMP Thu Jul 23 15:44:03 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux [[email 

Docker安装及镜像管理

1.docker简介 容器虚拟化,比传统虚拟化轻量 2013年出现,发展非常迅猛 Redhat在6.5版本开始支持docker 使用GO语言开发,基于apache2.0协议 开源软件,项目代码在github维护 2.容器虚拟化和传统虚拟化比较 3.Docker的优势 启动非常快,秒级实现 资源利用率很高,一台机器可以跑上千个docker容器 更快的交付和部署,一次创建和配置后,可以在任意 地方运行 内核级别的虚拟化,不需要额外的hypevisor支持,会有更高的性能和效率 易迁移,平台依赖性不强

paas架构之docker——镜像管理

1. 镜像管理 1.1. 列出镜像 Sudo docker images 1.2. 查看镜像 Sudo docker images xxxx 1.3. 拉取镜像 Sudo docker pull ubuntu 1.4. 查找镜像 Sudo docker search mysql 1.5. 删除镜像 sudo docker rmi xxxxx (force) 1.6. 构建镜像 1.6.1. Docker commit 不推荐,建议使用docker build+ docker file 1.6.2

一张图比較 Docker 和 Git:镜像管理设计理念

Docker 的镜像管理设计中大量借鉴了 Git 的理念. 以下这张图将对两者的核心概念和操作进行比較,有助于大家高速掌握管理 Docker 镜像的正确方式. watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQveWVhc3k=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" > 微信订阅版本号:__biz=MzA5MTAxNzI2Mw==&mid