在Docker中,容器和图像之间有什么区别?

 Perz 发布于 2023-01-29 21:53

Docker中的容器和图像有什么区别?在入门Docker教程中,这些术语都被使用,但我不明白其中的区别.

任何人都可以解释一下吗?

7 个回答
  • 图像是根文件系统更改的有序集合以及在容器运行时内使用的相应执行参数.图像是只读的.

    https://docs.docker.com/glossary/?term=image

    容器是图像的活动(或退出时不活动)状态实例化.

    https://docs.docker.com/glossary/?term=container

    2023-01-29 21:57 回答
  • 图像是活动容器的冻结不可变快照.容器正在运行(或停止)某些映像的实例.

    从名为'ubuntu'的基本映像开始.让我们在ubuntu映像中以交互方式运行bash并创建一个文件.我们将使用-i-t标志为我们提供一个交互式bash shell.

    $ docker run -i -t ubuntu  /bin/bash
    root@48cff2e9be75:/# ls
    bin  boot  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
    root@48cff2e9be75:/# cat > foo
    This is a really important file!!!!
    root@48cff2e9be75:/# exit
    

    退出并重新启动映像时,不要指望该文件会留下来.您正在从之前开始的完全相同的状态重新启动,而不是从中断的位置重新启动.

    $ docker run -i -t ubuntu  /bin/bash
    root@abf181be4379:/# ls
    bin  boot  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
    root@abf181be4379:/# exit
    

    但是,现在不再运行的容器具有状态并且可以保存(提交)到图像.

    $ docker ps -a
    CONTAINER ID        IMAGE               COMMAND                CREATED              STATUS                          PORTS                      NAMES
    abf181be4379        ubuntu:14.04        /bin/bash              17 seconds ago       Exited (0) 12 seconds ago                                  elegant_ardinghelli    
    48cff2e9be75        ubuntu:14.04        /bin/bash              About a minute ago   Exited (0) 50 seconds ago                                  determined_pare        
    ...
    

    让我们从容器ID 48cff2e9be75创建一个图像,我们在其中创建了我们的文件:

    $ docker commit 48cff2e9be75 ubuntu-foo
    d0e4ae9a911d0243e95556e229c8e0873b623eeed4c7816268db090dfdd149c2
    

    现在,我们有一个包含我们非常重要文件的新图像:

    $ docker run ubuntu-foo /bin/cat foo
    This is a really important file!!!!
    

    尝试命令docker images.您应该会看到新图像ubuntu-foo以及ubuntu我们开始使用的标准图像.

    2023-01-29 21:57 回答
  • DockerFile-(构建)-> DockerImage-(运行)-> DockerContainer

    DockerFile是您或开发人员编写的用于执行某些操作的代码(安装前)

    Docker Image是您在构建docker文件时得到的。

    运行Docker映像后即可获得 Docker Container

    我们可以通过拉动从docker hub获得Docker Image,然后运行它以获取容器。

    2023-01-29 21:59 回答
  • 图像基本上是用于创建容器的不可变模板.通过考虑将图像转换为容器的情况,可以更容易地理解图像和容器之间的区别.

    Docker引擎获取图像并在顶部添加读写文件系统,然后初始化各种设置.这些设置包括网络选项(IP,端口等),名称,ID和任何资源限制(CPU,内存).如果已经要求Docker引擎运行容器,它还将初始化其中的进程.可以停止并重新启动容器,在这种情况下,它将保留所有设置和文件系统更改(但会丢失内存中的任何内容,并且将重新启动所有进程).出于这个原因,停止或退出的容器是一样的图像.

    2023-01-29 22:00 回答
  • 使用面向对象的编程类比,Docker镜像和Docker容器之间的差异与类和对象之间的差异相同.对象是类的运行时实例.类似地,容器是图像的运行时实例.

    实例化对象时只创建一次对象.同样,容器可以运行或停止.容器是从图像中创建的,但情况可能并非总是如此.以下示例创建Apache服务器映像,运行映像,列出映像,然后列出容器:

      使用以下内容创建Dockerfile:

      FROM httpd:2.4
      

      安装Apache服务器

      sudo docker build -t my-apache2 .
      

      运行图像

      sudo docker run -it --rm --name my-running-app my-apache2
      

      列出Docker镜像

      sudo docker images
      

      列出正在运行的Docker容器

      docker ps
      

      列出所有容器

      docker ps -a
      

      列出最新创建的容器

      docker ps -l
      

    2023-01-29 22:00 回答
  • 图像[像vm]

    只读用于创建容器的模板

    由您或其他Docker用户推荐

    存储在Docker Hub或您的本地注册表中

    容器[像跑步机]

    隔离的应用平台

    包含运行应用程序所需的一切

    基于图像

    图像链接以显示什么是容器

    2023-01-29 22:00 回答
  • 用简单的话说.

    图片 -

    用于创建容器的文件系统和配置(只读)应用程序. 更多细节.

    容器 -

    这些是Docker镜像的运行实例.容器运行实际的应用程序.容器包括应用程序及其所有依赖项.它与其他容器共享内核,并作为主机操作系统上用户空间中的独立进程运行. 更多细节.


    其他需要注意的重要条款:


    Docker守护程序 -

    在管理构建,运行和分发Docker容器的主机上运行的后台服务.

    Docker客户端 -

    命令行工具,允许用户与Docker守护程序进行交互.

    Docker商店 -

    除其他外,Store是Docker镜像的注册表.您可以将注册表视为所有可用Docker镜像的目录.

    一张图片胜过千言万语.

    在此输入图像描述

    (为了更深入的了解,请阅读此内容.)

    摘要:

    图像从泊坞毂从或建立一个Dockerfile =>给出一个泊坞图像(不可编辑).

    运行图像(docker run image_name:tag_name)=>给出一个正在运行的图像即容器(可编辑)

    2023-01-29 22:04 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有