• docker image和container详解


    详解 Docker 中的 image 和 container

     

    Docker架构图

    Docker 是一种容器。Docker 中十分重要的两个概念 Image 和 container,Image 和 container 可以看作面向对象思想中的类和对象。container 是 Image 的实例化。

    Image 是只读的,分为 Base Image 和普通 Image,Base Image 是直接基于内核构造的,例如 Ubuntu Image、Centos Image 等。

    Image 的操作

    # 列出本地所有Images
    $ docker image ls
    # 或者
    $ docker images
    
    # 运行某个Image
    $ docker run hello-world
    

    两种获取 Image 的方法:

    1. Build from Dockerfile:

      新建一个 Dockerfile,例:

      FROM centos
      RUN yum install -y vim
      

      构建 Image:

      $ docker image build -t tag/image-name .
      # 或者
      $ docker build -t tag/image-name .
      
    2. Pull from Registry(类似 Github):

      $ docker pull hello-world
      

    删除 Image:

    $ docker rmi <IMAGE ID>
    # IMAGE ID不必写全
    

    Container 的操作

    列出 Containers:

    $ docker container ls
    # 或者
    $ docker ps
    
    # 列出所有包括已经退出的Container
    $ docker container ls -a
    # 或者
    $ docker ps -a
    

    交互式运行 Container:

    $ docker run -it centos
    # 此centos与宿主机共享内核,使用uname -a查看内核
    

    后台运行 container:

    $ docker run -d flask-hello-world
    # 如果不使用--name,将会随机生成一个容器名
    

    重启某个 Container:

    $ docker start <container_name>
    

    删除一个 Container

    $ docker container rm <CONTAINER ID>
    # CONTAINER ID不必写全
    # 或者
    $ docker rm <CONTAINER ID>
    

    删除所有 Container:

    $ docker rm $(docker container ls -aq)
    # 删除所有已退出的Container
    $ docker rm $(docker container ls -f "status=exited" -q)
    

    将一个经过修改后的 container 生成为一个新的 image:

    $ docker container commit interesting_wilson x0c/centos-vim
    sha256:9a746e51ff5f95dd4119a8bfebf6d678b93b0c4f0bc786bf2df61da495fc7f25
    $ docker images
    REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
    x0c/centos-vim      latest              9a746e51ff5f        7 seconds ago       330MB
    centos              7                   b5b4d78bc90c        2 weeks ago         203MB
    $ docker history 9a746e51ff5f
    IMAGE               CREATED             CREATED BY                                      SIZE
    9a746e51ff5f        43 seconds ago      /bin/bash                                       127MB
    b5b4d78bc90c        2 weeks ago         /bin/sh -c #(nop)  CMD ["/bin/bash"]            0B
    <missing>           2 weeks ago         /bin/sh -c #(nop)  LABEL org.label-schema.sc…   0B
    <missing>           2 weeks ago         /bin/sh -c #(nop) ADD file:38e2d2a1a0cd8694b…   203MB
    

    以上这种方法不太提倡,最好还是通过 Dockerfile build a image,这样的 Image 更加透明,让人感觉更加安全。

  • 相关阅读:
    习题4.7利用vector实现数据复制
    习题4.18
    4.8编写一小段程序实现两vector是否相等的比较
    关于野指针
    学习c++的50条忠告
    c++头文件
    习题4.14
    容器和迭代器
    Android上C++对象的自动回收机制分析
    Windows下载Android源码
  • 原文地址:https://www.cnblogs.com/showker/p/15939309.html
Copyright © 2020-2023  润新知