欢迎光临
我们一直在努力

什么是Docker Container?

本站教程收集整理的这篇文章主要介绍了什么是Docker Container?,本站教程本站觉得挺不错的,现在分享给大家,也给大家做个参考。

@H_301_4@

  • 通过Image创建( copy )
  • 在Image layer(只读)之上建立一个container layer (可读写)
  • 可类比OOP:类和实例
    image 相当于一个类,container 就是每个实例
  • Image负责app的存储和分发,Container负责运行app
  • Dockerfile

    FROM scratch
    ADD Hello /
    CMD ["/Hello"]
    
    docker container ls
    

    当前无运行的容器

    docker container ls -a
    

    显示所有运行和已退出的容器

    CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
    // 如果本地没有,则默认拉取最新的远程镜像
    docker run centos
    

    但如果直接这么运行,直接就退出了,啥也看不到。

    这时就想要

    交互式运行容器

    docker run -it vps云服务器 centos
    

    docker container ls -a
    

    现在查看就是 up 状态了

    @H_301_4@

  • 现在退出刚才运行的 centos

  • 再次查看容器状态

  • 可还发现有很多重复的退出的容器 centos,怎么删除重复的呢

  • 经过一顿docker container rm即可

  • 构建自定义的 Docker image

    @H_301_4@

  • 先进入原 image centos

  • 由于本身没有 vim,我们正好安装下

    yum install -y yum
    

    安装完成后,退出该 image

    @H_301_4@

  • 提交刚才安装过 vim 的新的image

  • 可见的确大点

  • 我们直接见证 image 的变迁历史即可

  • 但不推荐这种创建新 image 的方式,因为别人不知道这个 image 到底经历了啥,即是否安全呢?

    所以我们就常通过创建 Dockerfile 文件明晰 image 变化。

    FROM centos
    RUN yum install -y vim
    

    docker build -t javaedge/centos-vim-new .
    

    从日志可见中间有个临时中转生成的 image,最后完成时被删除。

    [+] Building 20.9s (6/6) FINISHED
     => [internal] load .dockerignore                                                                                                   0.0s
     => => transferring context: 2B                                                                                                     0.0s
     => [internal] load build deFinition from Dockerfile                                                                                0.0s
     => => transferring dockerfile: 77B                                                                                                 0.0s
     => [internal] load Metadata for docker.io/library/centos:latest                                                                    0.0s
     => [1/2] FROM docker.io/library/centos                                                                                             0.0s
     => => resolve docker.io/library/centos:latest                                                                                      0.0s
     => [2/2] RUN yum install -y vim                                                                                                   20.3s
     => exporTing to image                                                                                                              0.5s
     => => exporTing layers                                                                                                             0.5s
     => => wriTing image sha256:6fa5d61ccad62a224b2fd2d8d8526aa52bc12f42c6b27ab31e7df1f62768705d                                        0.0s
     => => naming to docker.io/javaedge/centos-vim-new                                                                                  0.0s
    

    所以以后直接分享 Dockerfile 即可,别人拿到文件就能创建自己想要的 image。

    本站总结

    以上是本站教程为你收集整理的什么是Docker Container?全部内容,希望文章能够帮你解决什么是Docker Container?所遇到的程序开发问题。

    如果觉得本站教程网站内容还不错,欢迎将本站教程推荐给好友。

    本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
    如您有任何意见或建议可联系处理。

    赞(0)
    【声明】:本博客不参与任何交易,也非中介,仅记录个人感兴趣的主机测评结果和优惠活动,内容均不作直接、间接、法定、约定的保证。访问本博客请务必遵守有关互联网的相关法律、规定与规则。一旦您访问本博客,即表示您已经知晓并接受了此声明通告。