• Docker常用命令工作原理


      在正常学习使用docker过程中,常常需要执行各种docker的命令,理解每个命令背后的工作原理可以很好的使用维护docker。

    一、标识说明

      Image(统一只读文件系统)

                

      静态容器 (未运行的容器,统一可读写文件系统)

                

      动态容器(运行中的容器,进程空间(包括进程)+ 统一可读写文件系统)

                

    二、常用命令

    2.1 Docker 生命周期相关命令

    • docker create < image-id >

      

      该命令即为在只读文件系统上添加一层可读写层「Top Layer」,并生成可读写文件系统。该命令状态下容器为静态容器,并没有运行。

    • docker start | restart < container-id >

      

      该命令即为在可读写文件系统添加一个进程空间和运行的进程,并生成一个动态容器。

    docker stop 即为 docker start 的逆过程。

    • docker run < image-id >

      

      docker run = docker create + docker start

      docker run 流程类似如下:

      

    • docker stop < container-id >

      

      该指令向运行中的容器发一个 SIGTERM 信号,然后停止所有的进程。即为 docker start 的逆过程。

    • docker kill < container-id >

      

      该指令向容器发送一个不友好的 SIGKILL 信号,相当于快速强制关闭容器。与 docker stop 的区别是 docker stop 是先发 SIGTERM 信号来清理进程,然后再发 SIGKILL 信号退出,整个进程是正常关闭的。

    • docker pause < container-id >

      

      该指令用作暂停容器中的所有进程,使用 cgroup 的 freezer 顺序暂停容器里的所有进程。

    docker unpause 为其逆过程即恢复所有进程,比较少使用。

    • docker commit < container-id >

      

      

      该指令用作把容器的可读写层转化成只读层,即从容器状态「可读写文件系统」变为镜像状态「只读文件系统」,可理解为固化。

    • docker build

      

      

      docker build = docker run 「运行容器 + 进程修改数据」+ docker commit「固化数据」,整个过程不断循环直至生成所需镜像。

    1. 循环一次便会形成一个新的层(新镜像 = 原镜像层 + 已固化的可读写层)
    2. docker build 过程一般通过 dockerfile 文件来实现。

    2.2 Docker 查询类命令

      Docker 可查询的对象有:image、container、image/container 中的数据、系统信息(包括容器数、镜像数及其它)。

    • docker images

      

      该指令用作列出镜像的顶层镜像(以顶层镜像 ID 来表示整个完整镜像),每个顶层镜像下面隐藏多个镜像层。

    • docker images -a

      

      该指令用作列出镜像的所有镜像层。镜像层的排序以每个顶层镜像 ID 为首,依次列出每个镜像下的所有镜像层。

    • docker history < image-id >

      

      该指令列出该镜像 ID 下的所有历史镜像。

    • docker ps

      

      该指令用作列出所有运行中的容器。

    • docker ps -a

      

      该指令用作列出所有容器,包括静态容器和动态容器。

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

      

      该指令用作提取出容器或镜像中最顶层的元数据。

    • docker info

      该指令用作显示 Docker 系统信息,包括镜像和容器数。

    2.3 Docker 操作类命令

    • docker rm < container-id >

      
      该指令用作移除容器,默认只能对静态容器(非运行状态的)进行移除。如果要移除运行中的容器,需要使用 -f(force) 参数,即:docker rm -f <container-id>

    • docker rmi < image-id >

      

      该指令作用与 docker rm 类似,用作移除镜像。

    • docker exec < running-container-id >

      

      该指令用于在运行状态的容器中执行一个新的进程。

    • docker export < container-id >

      

      该指令用作持久化一个容器,会创建一个 tar 格式的文件。该文件移除了元数据和不必要的层,将多个层整合成了一个层,只保存了当前统一视角看到的内容。

      如果你要持久化一个镜像,可以使用 docker save 指令。它与 docker export 的区别在于其保留了所有元数据和历史层。

      通过 docker export 导出的容器再 docker import 到 Docker 中后,在 docker images –tree 命令只能看到一个镜像。而通过 docker save 保存后的镜像则不同,它能够看到这个镜像构建过程中的所有历史层。docker export 和 docker save 两者更多的区别可参考「Docker 的 save 和 export 命令的区别」一文。

    参考文献:

      1.http://www.google.com

      2.http://t.cn/RdC2419

      3.http://t.cn/RUfqHh9

      4.https://www.huweihuang.com/article/docker/docker-commands-principle/

      5.http://dockone.io/article/783

      6.https://www.docker.com

                                    --- END ---

    作者:浪仙

    出处:https://www.cnblogs.com/LangXian/

    关于博主:技术爱好者一员,云计算方向,如有问题探讨可以直接私信我,亦可下方留言。

    版权声明:如果喜欢本文章,欢迎转载但需在明显位置给出原文连接。

    声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!

  • 相关阅读:
    js的6种继承方式
    将数组分割成指定长度的小数组
    input file样式美化
    css伪类和伪元素的区别,:before和::before的区别
    css实现垂直居中
    css实现中间文字,两边横线效果
    css中:not()选择器和jQuery中.not()方法
    jQuery中判断input的disabled属性
    jQuery中判断input的checked属性
    HMTL label标签
  • 原文地址:https://www.cnblogs.com/LangXian/p/10644644.html
Copyright © 2020-2023  润新知