Docker 的基本概念

Docker 是一个开源的应用容器引擎,能够将应用程序及其依赖打包在一个可移植的容器中,并在任何支持 Docker 的平台上运行。下面是 Docker 的一些核心概念:

镜像(Image)

镜像就像是一个”模板”或者”快照”,包含了运行程序所需的一切。

# 查看本地有哪些镜像(就像查看你有哪些安装光盘)
docker images
 
# 从网上下载一个镜像(就像下载一个软件安装包)
docker pull nginx:latest

容器(Container)

容器是镜像运行起来后的实例,就像用安装光盘安装好的系统。

# 用镜像创建一个容器并运行(就像用光盘安装系统)
docker run -d nginx:latest
 
# 查看正在运行的容器(就像查看正在运行的程序)
docker ps

仓库(Repository)

仓库是存放镜像的地方,就像应用商店。

镜像与容器的关系

关系图

镜像(Image)- 模板
  ├── 只读层 1
  ├── 只读层 2
  └── 只读层 3
        ↓
容器(Container)- 运行实例
  ├── 只读层 1(来自镜像,不能修改)
  ├── 只读层 2(来自镜像,不能修改)
  ├── 只读层 3(来自镜像,不能修改)
  └── 可写层(容器独有,可以修改)

关键点

  1. 一个镜像可以创建多个容器

    • 就像一张安装光盘可以安装多台电脑
    • 每个容器都是独立的,互不影响
  2. 容器修改不影响镜像

    • 容器中的修改只存在于可写层
    • 删除容器后,修改会丢失
    • 如果需要保存数据,需要使用数据卷
  3. 容器是镜像的运行实例

    • 镜像 = 类(Class)
    • 容器 = 对象(Object)