zoukankan      html  css  js  c++  java
  • 通过全局来理解Docker命令

    通过全局来理解Docker命令

    docker create <image-id>

    docker create 命令为指定的镜像(image)添加了一个可读写层,构成了一个新的容器。注意,这个容器并没有运行。 

    docker start <container-id>

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


    Docker start命令为容器文件系统创建了一个进程隔离空间注意,每一个容器只能够有一个进程隔离空间。 
     

    docker run <image-id>

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


    看到这个命令,读者通常会有一个疑问:docker start 和 docker run命令有什么区别。 
     

    7.png



    从图片可以看出,docker run 命令先是利用镜像创建了一个容器,然后运行这个容器。这个命令非常的方便,并且隐藏了两个命令的细节,但从另一方面来看,这容易让用户产生误解。 

    题外话:继续我们之前有关于Git的话题,我认为docker run命令类似于git pull命令。git pull命令就是git fetch 和 git merge两个命令的组合,同样的,docker run就是docker create和docker start两个命令的组合。 
     

    docker ps

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


    docker ps 命令会列出所有运行中的容器。这隐藏了非运行态容器的存在,如果想要找出这些容器,我们需要使用下面这个命令。 
     

    docker ps –a

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


    docker ps –a命令会列出所有的容器,不管是运行的,还是停止的。 
     

    docker images

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


    docker images命令会列出了所有顶层(top-level)镜像。实际上,在这里我们没有办法区分一个镜像和一个只读层,所以我们提出了top-level 镜像。只有创建容器时使用的镜像或者是直接pull下来的镜像能被称为顶层(top-level)镜像,并且每一个顶层镜像下面都隐藏了多个镜像层。 
     

    docker images –a

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


    docker images –a命令列出了所有的镜像,也可以说是列出了所有的可读层。如果你想要查看某一个image-id下的所有层,可以使用docker history来查看。 
     

    docker stop <container-id>

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


    docker stop命令会向运行中的容器发送一个SIGTERM的信号,然后停止所有的进程。 
     

    docker kill <container-id>

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


    docker kill 命令向所有运行在容器中的进程发送了一个不友好的SIGKILL信号。 
     

    docker pause <container-id>

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


    docker stop和docker kill命令会发送UNIX的信号给运行中的进程,docker pause命令则不一样,它利用了cgroups的特性将运行中的进程空间暂停。具体的内部原理你可以在这里找到:https://www.kernel.org/doc/Doc ... m.txt,但是这种方式的不足之处在于发送一个SIGTSTP信号对于进程来说不够简单易懂,以至于不能够让所有进程暂停。 
     

    docker rm <container-id>

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


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

    docker rmi <image-id>

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


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

    docker commit <container-id>

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


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

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


     

    docker build

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


    docker build命令非常有趣,它会反复的执行多个命令。 
     

    9.png



    我们从上图可以看到,build命令根据Dockerfile文件中的FROM指令获取到镜像,然后重复地1)run(create和start)、2)修改、3)commit。在循环中的每一步都会生成一个新的层,因此许多新的层会被创建。 
     

    docker exec -it <running-container-id> /bin/bash

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


    docker exec 命令会在运行中的容器执行一个新进程。 
     

    docker inspect <container-id> or <image-id>

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


    docker inspect命令会提取出容器或者镜像最顶层的元数据。 
     

    docker save <image-id>

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


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

    docker export <container-id>

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


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

    docker history <image-id>

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


    docker history命令递归地输出指定镜像的历史镜像。 

    docker从容器里面拷文件到宿主机或从宿主机拷文件到docker容器里面

    1、从容器里面拷文件到宿主机

     docker cp 容器名:要拷贝的文件在容器里面的路径       要拷贝到宿主机的相应路径 

      2、从宿主机拷文件到容器里面

      docker cp 要拷贝的文件路径 容器名:要拷贝到容器里面对应的路径

  • 相关阅读:
    【Javascript】javascript学习 二十二 JavaScript 对象简介
    【Javascript】javascript学习 二十六 JavaScript Boolean(逻辑)对象
    【Javascript】javascript学习 二十九 JavaScript HTML DOM 对象
    【Javascript】javascript学习 二十八 JavaScript RegExp 对象
    【Javascript】javascript学习 二十一 JavaScript 指导方针
    【Javascript】javascript学习 二十三 JavaScript 字符串(String)对象
    【Javascript】javascript学习 三十 JavaScript 浏览器检测
    【Javascript】javascript学习 二十五 JavaScript Array(数组)对象
    【Javascript】javascript学习 二十四 JavaScript Date(日期)对象
    【Javascript】javascript学习 二十七 JavaScript Math(算数)对象
  • 原文地址:https://www.cnblogs.com/ltyc/p/14070116.html
Copyright © 2011-2022 走看看