关于docker容器和镜像的区别

引自:https://blog.csdn.net/shenmerenya/article/details/78522206

docker的整个生命周期有三部分组成:镜像(image)+容器(container)+仓库(repository);

如下图所示,容器是由镜像实例化而来,这和我们学习的面向对象的概念十分相似,我们可以把镜像看作类,把容器看作类实例化后的对象。

[html] view plain copy

docker 的镜像概念类似虚拟机的镜像。是一个只读的模板,一个独立的文件系统,包括运行容器所需的数据,可以用来创建新的容器。(  docker create <image -id > :为指定的镜像添加一个可读写层,构成一个新的容器;)

例如:一个镜像可以包含一个完整的ubuntu操作系统环境,里面仅安装了mysql或用户需要的其他应用程序。

docker镜像实际上是由一层一层的系统文件组成,这种层级的文件系统被称为UnionFS( Union file system  统一文件系统),镜像可以基于dockerfile构建,dockerfile是一个描述文件,里面包含了若干条密令,每条命令都会对基础文件系统创建新的层次结构。

docker提供了一个很简单的机制来创建镜像或更新现有的镜像。用户甚至可以从其他人那里下载一个已经做好的镜像直接使用。(镜像是只读的,可以理解为静态文件)

docker利用容器来运行应用:docker容器是由docker镜像创建的运行实例。docker容器类似虚拟机,可以执行包含启动,停止,删除等。每个容器间是相互隔离的。容器中会运行特定的运用,包含特定应用的代码及所需的依赖文件。可以把容器看作一个简易版的linux环境(包含root用户权限,进程空间,用户空间和网络空间等)和运行在其中的应用程序。

相对于镜像来说容器是动态的,容器在启动的时候创建了一层可写层次作为最上层。(   docker create <image -id > :为指定的镜像添加一个可读写层,构成一个新的容器;)

docker仓库:如果使用了git和github就很容易理解docker的仓库概念。docker仓库概念和git类似。

docker仓库是用来包含镜像的位置,docker提供了一个注册服务器(register)来保存多个仓库,每个仓库又可以包含多个具备不同tag的镜像,

docker运作中使用的默认仓库是docker hub公共仓库。

仓库支持的操作类似git,当用户创建了自己的镜像之后就可以使用push命令将它上传到共有或者私有的仓库。这样下次再另外一台机器上使用这个镜像的时候只需要从仓库里面pull下来就可以了。

docker 容器=镜像+可读层

docker create <image -id > :为指定的镜像添加一个可读写层,构成一个新的容器;

docker  start  <container -id >  :docker start 命令为容器文件系统创建一个进程的隔离空间。注意,每一个容器只能够有一个进行隔离空间;(运行容器)

docker  run < image -id>: 这个是先利用镜像创建一个容器,然后运行了这个容器;

docker stop   <container -id >停止所用的进程;

docker kill  <container -id > :向所用运行在容器的进行发送一个不友好的sigkill信号;

docker pause <container-id>: 将运行中的进程空间暂停

docker  rm <container -id> :docker rm命令会移除构成容器的可读写层。注意,这个命令只能对非运行态容器执行。

docker rmi 命令会移除构成镜像的一个只读层。你只能够使用docker rmi来移除最顶层(top level layer)(也可以说是镜像),你也可以使          用-f        参数来强制删除中间的只读层。

docker commit <container-id>:docker commit命令将容器的可读写层转换为一个只读层,这样就把一个容器转换成了不可变的镜像。

docker save <image-id>:docker save命令会创建一个镜像的压缩文件,这个文件能够在另外一个主机的Docker上使用。和export命令不同,这个命令为每一个层都保存了它们的元数据。这个命令只能对镜像生效。

docker export <container-id>:docker export命令创建一个tar文件,并且移除了元数据和不必要的层,将多个层整合成了一个层,只保存了当前统一视角看到的内容(译者注:expoxt后 的容器再import到Docker中,通过docker images –tree命令只能看到一个镜像;而save后的镜像则不同,它能够看到这个镜像的历史镜像)。

docker history <image-id>:docker history命令递归地输出指定镜像的历史镜像。

docker  ps  会列出所有运行中的容器; docker ps  -a  列出运行中和未运行的容器;

docker images -a  列出所用的镜像,也可以说列出所用的可读层

原文地址:https://www.cnblogs.com/xxj-bigshow/p/9089140.html

时间: 2024-10-29 21:49:47

关于docker容器和镜像的区别的相关文章

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

图解Docker容器和镜像 这篇文章希望能够帮助读者深入理解Docker的命令,还有容器(container)和镜像(image)之间的区别,并深入探讨容器和运行中的容器之间的区别. 当我对Docker技术还是一知半解的时候,我发现理解Docker的命令非常困难.于是,我花了几周的时间来学习Docker的工作原理,更确切地说,是关于Docker统一文件系统(the union file system)的知识,然后回过头来再看Docker的命令,一切变得顺理成章,简单极了. 题外话:就我个人而言,

docker容器和镜像区别

这篇文章希望能够帮助读者深入理解Docker的命令,还有容器(container)和镜像(image)之间的区别,并深入探讨容器和运行中的容器之间的区别. 当我对Docker技术还是一知半解的时候,我发现理解Docker的命令非常困难.于是,我花了几周的时间来学习Docker的工作原理,更确 切地说,是关于Docker统一文件系统(the union file system)的知识,然后回过头来再看Docker的命令,一切变得顺理成章,简单极了. 题外话:就我个人而言,掌握一门技术并合理使用它的

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

这篇文章希望能够帮助读者深入理解 Docker 的命令,还有容器(container)和镜像(image)之间的区别,并深入探讨容器和运行中的容器之间的区别. 当我对 Docker 技术还是一知半解的时候,我发现理解 Docker 的命令非常困难.于是,我花了几周的时间来学习 Docker 的工作原理,更确切地说,是关于 Docker 统一文件系统(the union file system)的知识,然后回过头来再看 Docker 的命令,一切变得顺理成章,简单极了. 题外话:就我个人而言,掌握

docker容器与镜像的关系

1.容器和镜像的关系 2.docker commit和docker import的区别 docker import会生成一个全新的镜像,而docker commit则是“继承自服镜像”,保留了父镜像的相关信息 原文地址:https://www.cnblogs.com/ycg-blog/p/12109237.html

Docker 容器和镜像使用

Docker 容器使用: docker run -d -P training/webapp python app.py -d:让容器在后台运行. -P:将容器内部使用的网络端口映射到我们使用的主机上. 查看 WEB 应用容器: docker ps 我们也可以指定 -p 标识来绑定指定端口. [email protected]:~$ docker run -d -p 5000:5000 training/webapp python app.py 查看WEB应用程序容器的进程: docker top

创建支持ssh服务的docker容器和镜像

http://www.kongxx.info/blog/?p=57 1. 这里使用的centos作为容器,所以首先下载centos的imagessudo docker pull centos 2. 下载后运行一个centos的容器,这里使用centos6作为我测试的容器sudo docker run --name=centos-ssh -i -t centos:centos6 /bin/bash 3. 安装openssh-server服务软件包yum install openssh-server

docker 容器和镜像理解

1.镜像是Docker容器的基石,容器是镜像的运行实例,有了镜像才能启动容器.容器和镜像是一对一的,一个容器里就运行一个镜像. 1.base镜像----提供了一个基本的操作系统环境,用户可以根据需要安装和配置软件.2.base镜像通常是各种Linux发行版的Docker镜像比如ubuntu.Debian.centos等.3.base镜像只是在用户空间与发行版一致,kernel版本与发行版是不同的.比如说虚机系统是ubuntu14.04,运行一个容器是centos系统的,那么centos使用的其实

window7 scp 访问docker容器中镜像

遇到坑不少,做一下记录,备忘!! 准备工作,pull ubuntu   镜像( Ubuntu 18.04.1 ) docker pull ubuntu ###Docker的Ubuntu镜像安装的容器无ifconfig命令和ping命令 apt-get update apt install net-tools # ifconfig apt install iputils-ping # ping ###查看系统版本 cat /etc/issue ###ssh#查看ssh ps -e|grep ssh

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

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