Docker Images(镜像)生命周期
Docker 是一个用于创建、部署和运行应用容器的平台。为了更好地理解 Docker 的生命周期,以下是相关概念的介绍,并说明它们如何相互关联:
-
Docker:
- Docker 是一个开源平台,用于自动化应用程序在轻量级、便携式容器中的部署、扩展和管理。
-
Dockerfile:
- Dockerfile 是一个文本文件,包含一系列指令,用于构建 Docker 镜像。每个指令在 Docker 镜像中创建一个新的层。
-
build:
docker build
命令用于从 Dockerfile 构建一个 Docker 镜像。该命令读取 Dockerfile 的内容,并按照其中的指令一步步创建镜像。
-
Images:
- Docker 镜像是一个不可变的文件,它包含了应用程序以及其运行所需的一切。镜像是基于层的,每层代表一个文件系统的快照。
-
tag:
- 标签用于给 Docker 镜像赋予一个易于识别的名字和版本号。比如,
myapp:1.0
中的1.0
就是一个标签。
- 标签用于给 Docker 镜像赋予一个易于识别的名字和版本号。比如,
-
registry:
- Docker 仓库是存储和分发 Docker 镜像的地方。最常用的公共仓库是 Docker Hub,也可以有私有仓库。
-
push:
docker push
命令用于将本地 Docker 镜像上传到 Docker 仓库中,以便在其他环境中使用或共享。
-
pull:
docker pull
命令用于从 Docker 仓库中下载镜像到本地环境。
-
Containers:
- 容器是从镜像创建的一个实例,运行应用程序。容器是轻量级的隔离环境,确保应用程序的独立运行。
-
run:
docker run
命令用于创建并启动一个新的容器。例如,docker run myapp:1.0
会从myapp:1.0
镜像创建并启动一个容器。
-
commit:
docker commit
命令用于将一个正在运行的容器保存为一个新的镜像。这对于保存容器的当前状态很有用。
-
stop:
docker stop
命令用于停止一个正在运行的容器。停止的容器可以通过start
命令重新启动。
-
start:
docker start
命令用于启动一个已经停止的容器,而不是创建一个新的实例。
-
restart:
docker restart
命令用于重新启动一个正在运行或已经停止的容器。
-
save:
docker save
命令用于将一个或多个镜像保存为一个 tar 文件,以便在不同的系统之间传输。比如,docker save -o backup.tar myapp:1.0
。
-
load:
docker load
命令用于从一个 tar 文件中加载镜像。例如,docker load -i backup.tar
。
-
Local Docker instance:
- 本地 Docker 实例是指在本地计算机上运行的 Docker 引擎,用于构建、运行和管理容器。
-
My computer:
- 我的计算机是指用户个人的计算设备,上面可以安装 Docker 引擎,允许用户在本地构建和运行 Docker 容器。
-
backup.tar:
- 这是一个由
docker save
命令生成的 tar 文件,包含一个或多个 Docker 镜像的备份。它可以用docker load
命令恢复到本地 Docker 实例。
- 这是一个由
通过这些概念,Docker 提供了一个完整的生命周期管理工具集,从创建和测试镜像,到分发和运行容器,再到管理和备份镜像。每个步骤都在 Docker 环境中起着关键作用,确保应用程序可以高效、可靠地运行在不同的计算环境中。
Docker Container(容器)生命周期
Docker 容器管理涉及一系列命令和状态,用于控制容器的生命周期。以下是对这些概念的简要介绍:
-
docker run:
- 创建并启动一个新的容器。例如,
docker run myapp:latest
会从myapp:latest
镜像创建并启动一个容器。
- 创建并启动一个新的容器。例如,
-
docker restart:
- 重新启动一个正在运行或已停止的容器。相当于先执行
docker stop
,然后再执行docker start
。
- 重新启动一个正在运行或已停止的容器。相当于先执行
-
docker create:
- 仅创建一个新的容器,但不启动它。可以后续用
docker start
来启动这个容器。
- 仅创建一个新的容器,但不启动它。可以后续用
-
docker start:
- 启动一个已经被创建但未运行的容器,或者重新启动一个已停止的容器。
-
created:
- 容器状态,表示容器已经被创建,但还没有被启动。
-
running:
- 容器状态,表示容器正在运行中。
-
docker 容器的主进程退出:
- 当容器内的主进程(PID 1)退出时,容器也会停止运行,状态变为
exited
。
- 当容器内的主进程(PID 1)退出时,容器也会停止运行,状态变为
-
docker 服务挂掉:
- 如果 Docker 守护进程(Docker Daemon)崩溃或停止,所有运行中的容器都会停止。
-
docker pause:
- 暂停一个运行中的容器中的所有进程。
-
docker unpause:
- 恢复一个被暂停的容器中的所有进程。
-
docker rm:
- 删除一个已停止的容器。例如,
docker rm mycontainer
删除名为mycontainer
的容器。
- 删除一个已停止的容器。例如,
-
docker rm -f:
- 强制删除一个正在运行的容器。这相当于先执行
docker stop
再执行docker rm
。
- 强制删除一个正在运行的容器。这相当于先执行
-
docker stop/docker kill:
docker stop
:优雅地停止一个运行中的容器,发送 SIGTERM 信号,允许进程进行清理。docker kill
:立即停止一个运行中的容器,发送 SIGKILL 信号,强制终止进程。
-
paused:
- 容器状态,表示容器中的所有进程已被暂停。
-
exited:
- 容器状态,表示容器中的主进程已经退出,容器已停止运行。
-
deleted:
- 容器状态,表示容器已经被删除。
这些命令和状态提供了全面的工具集,允许用户管理 Docker 容器的整个生命周期,从创建、启动、暂停、停止到最终删除。这样可以灵活地控制应用程序的运行和资源的使用。
参考博客:
[1] https://cloud.tencent.com/developer/article/1885678
[2] https://cloud.tencent.com/developer/article/1518465