Docker Notes
T

镜像 image VS 容器 container

image 镜像

  • Docker image 是一个 read-only 文件,这个文件包含文件系统,源码,库文件,依赖,工具等一些运行 application 所需要的文件
  • 镜像可以理解成计算机系统中的程序,也就是静态的位于磁盘上面可以通过特定方式执行的文件(程序是操作系统可以识别的特定的二进制文件,Docker 镜像是可以被 Docker Daemon 识别并执行的特定文件)。
  • 镜像和普通的可执行文件的区别在于 镜像是分层架构,每个镜像一般都依赖于一个基础镜像。最基本的镜像叫 scratch 镜像。当然我们也可以构建自己的镜像,然后发布到镜像中心别人就也可以使用了。
  • Docker 镜像的构建是通过一个 DSL 语言来编写的,叫 Dockerfile。
  • 可以理解成一个模板
  • docker image 具有分层的概念
  • image 的获取
    • 自己制作
    • 从 registry 拉取(比如 docker hub)

container 容器

  • A container is a runnable instance of an image(容器是镜像的运行实例)。这个定义和进程的定义非常类似:进程是程序的运行实例。这样我们就可以将镜像类比为程序,容器类比为进程,这样就更好理解了。

  • 我们可以使用 Docker 的 CLI 命令或者 API 来创建、启动、停止和删除容器等操作。同时对于运行状态的容器我们可以登录进去,类似 ssh 命令等操作。

  • 容器默认是和其他容器以及其宿主机隔离开的。具体的隔离策略可以进行自定义设置。

  • “一个运行中的 docker image”

  • 实质是复制 image 并在 image 最上层加上一层 read-write 的层 (称之为 container layer, 容器层)

  • 基于同一个 image 可以创建多个 container

docker-image-vs-container

Show Graph Visualisation