zoukankan      html  css  js  c++  java
  • 关于docker容器和镜像的区别

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

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

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

    [html] view plain copy
     
    1.   

            

                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  列出所用的镜像,也可以说列出所用的可读层

  • 相关阅读:
    Android Studio 单刷《第一行代码》系列 05 —— Fragment 基础
    Android Studio 单刷《第一行代码》系列 04 —— Activity 相关
    Android Studio 单刷《第一行代码》系列 03 —— Activity 基础
    Android Studio 单刷《第一行代码》系列 02 —— 日志工具 LogCat
    Android Studio 单刷《第一行代码》系列 01 —— 第一战 HelloWorld
    IDEA 内网手动添加oracle,mysql等数据源,以及server returns invalid timezone错误配置
    eclipse maven设置
    IntelliJ IDE 常用配置
    eclipse maven 常见问题解决方案
    Maven 安装和配置
  • 原文地址:https://www.cnblogs.com/xxj-bigshow/p/9089140.html
Copyright © 2011-2022 走看看