Docker 容器详解:生命周期、命令清单与实操指南

文章目录

    • [一、Docker Container(容器)](#一、Docker Container(容器))
    • [二. 容器的作用](#二. 容器的作用)
    • [三. 容器的生命周期](#三. 容器的生命周期)
      • [3.1 容器命令清单](#3.1 容器命令清单)
      • [3.2 容器命令详解](#3.2 容器命令详解)

一、Docker Container(容器)

容器是镜像的运行实体。镜像是静态的只读文件,而容器带有运行时需要的可写文件层,并且容器中的进程属于运行状态,即容器运行着真正的应用进程。

容器有初建、运行、停止、暂停和删除五种状态,是基于镜像创建的可运行实例,且单独存在,一个镜像可以创建出多个容器。

  • 虽然容器的本质是主机上运行的一个进程,但是容器有自己独立的命名空间隔离和资源限制。也就是说,在容器内部,无法看到主机上的进程、环境变量、网络等信息,这是容器与直接运行在主机上进程的本质区别。

  • 运行容器化环境时,实际上是在容器内部创建该文件系统的读写副本。这将添加一个容器层,该层允许修改镜像的整个副本。


二. 容器的作用

镜像是静态文件,无法直接提供服务,容器则让镜像"运行起来",实现应用的部署与对外提供服务。

容器继承了虚拟化、容器化的核心收益,包括资源利用率高、环境标准化、资源弹性伸缩、差异化环境提供、沙箱安全、启动快速、维护和扩展容易等优势。


三. 容器的生命周期

  • created(初建状态) :通过 docker create 命令创建容器后,不立即启动运行。
  • running(运行状态) :通过 docker run 命令创建并启动容器,或通过 docker start 启动初建/停止状态的容器。
  • stopped(停止状态) :通过 docker stop 正常停止容器,或通过 docker kill 强制停止故障容器。
  • paused(暂停状态) :通过 docker pause 暂停容器,容器将失去 CPU 资源调度,其他资源保留;通过 docker unpause 恢复运行状态。
  • deleted(删除状态) :通过 docker rm 命令删除停止状态的容器。

生命周期转换说明:


3.1 容器命令清单

命令 别名 功能
docker create docker container create 创建容器
docker run docker container run 运行容器
docker attach docker container attach 连接到正在运行中的容器
docker commit docker container commit 将容器提交为镜像
docker cp docker container cp 在容器和宿主机之间拷贝文件
docker diff docker container diff 检查容器里文件结构的更改
docker exec docker container exec 在运行的容器中执行命令
docker export docker container export 将容器导出为 tar 文件
docker container inspect - 查看容器详细信息
docker kill docker container kill 杀死容器
docker logs docker container logs 查看容器日志
docker ps docker container ls、docker container list、docker container ps 查看容器
docker pause docker container pause 暂停容器
docker port docker container port 查看容器的端口映射
docker container prune - 删除停止的容器
docker rename docker container rename 重命名容器
docker restart docker container restart 重启容器
docker rm docker container rm、docker container remove 删除容器
docker start docker container start 启动容器
docker stats docker container stats 查看容器资源占用信息
docker stop docker container stop 停止容器
docker top docker container top 查看容器的资源占用
docker unpause docker container unpause 恢复容器运行
docker update docker container update 更新容器配置
docker wait docker container wait 阻止一个或多个容器停止

3.2 容器命令详解

  1. docker create
  • 功能:创建一个新的容器但不启动它。
  • 语法
bash 复制代码
docker create [OPTIONS] IMAGE [COMMAND] [ARG...]
  • 别名
bash 复制代码
docker container create
  • 关键参数
    • -i:以交互模式运行容器,通常与 -t 同时使用;
    • -P:随机端口映射,容器内部端口随机映射到主机的端口;
    • -p:指定端口映射,格式为"主机(宿主)端口:容器端口";
    • -t:为容器重新分配一个伪输入终端,通常与 -i 同时使用;
    • --name="nginx-lb":为容器指定一个名称;
    • -h "mars":指定容器的 hostname;
    • -e username="ritchie":设置环境变量;
    • --cpuset-cpus="0-2"--cpuset-cpus="0,1,2":绑定容器到指定 CPU 运行;
    • -m:设置容器使用内存最大值;
    • --network="bridge":指定容器的网络连接类型;
    • --link=[]:添加链接到另一个容器;
    • --volume, -v:绑定一个卷;
    • --rm:shell 退出时自动删除容器;
    • --restart:设置容器自动重启策略。
  • 样例
bash 复制代码
docker create --name mynginx nginx:latest
  1. docker run
  • 功能:创建一个新的容器并运行一个命令。
  • 语法
bash 复制代码
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
  • 别名
bash 复制代码
docker container run
  • 关键参数
    • -d:后台运行容器,并返回容器 ID(比 docker create 多此参数);
    • -i:以交互模式运行容器,通常与 -t 同时使用;
    • -P:随机端口映射,容器内部端口随机映射到主机的端口;
    • -p:指定端口映射,格式为"主机(宿主)端口:容器端口";
    • -t:为容器重新分配一个伪输入终端,通常与 -i 同时使用;
    • --name="nginx-lb":为容器指定一个名称;
    • -h "mars":指定容器的 hostname;
    • -e username="ritchie":设置环境变量;
    • --cpuset-cpus="0-2"--cpuset-cpus="0,1,2":绑定容器到指定 CPU 运行;
    • -m:设置容器使用内存最大值;
    • --network="bridge":指定容器的网络连接类型;
    • --link=[]:添加链接到另一个容器;
    • --volume, -v:绑定一个卷;
    • --rm:shell 退出时自动删除容器;
    • --restart:设置容器自动重启策略。
  • 样例
bash 复制代码
# 使用 nginx:latest 镜像以后台模式启动容器,命名为 mynginx
docker run --name mynginx -d nginx:latest

# 后台启动容器,将容器 80 端口映射到主机 80 端口,主机 /data 目录映射到容器 /data 目录
docker run -p 80:80 -v /data:/data -d nginx:latest
  1. docker ps
  • 功能:列出容器。
  • 语法
bash 复制代码
docker ps [OPTIONS]
  • 别名
bash 复制代码
docker container ls、docker container list、docker container ps
  • 关键参数
    • -a:显示所有的容器,包括未运行的;
    • -f:根据条件过滤显示的内容;
    • --format:指定返回值的模板文件(如 json 或 table);
    • -l:显示最新创建的容器;
    • -n:列出最近创建的 n 个容器;
    • --no-trunc:不截断输出;
    • -q:静默模式,只显示容器编号;
    • -s:显示总的文件大小。
  • 样例
bash 复制代码
# 显示所有容器(包括未运行的)
docker ps -a
  1. docker logs
  • 功能:查看容器日志。
  • 语法
bash 复制代码
docker logs [OPTIONS] CONTAINER
  • 别名
bash 复制代码
docker container logs
  • 关键参数
    • -f, --follow:跟踪日志输出;
    • --since:显示某个开始时间之后的所有日志;
    • -t, --timestamps:显示时间戳;
    • -n, --tail:仅列出最新 N 条容器日志。
  • 样例
bash 复制代码
# 跟踪查看容器 mynginx 的日志输出
docker logs -f mynginx

# 查看容器 mynginx 2016年7月1日后的最新10条日志
docker logs --since="2016-07-01" --tail=10 mynginx
  1. docker attach
  • 功能:连接到正在运行中的容器。
  • 语法
bash 复制代码
docker attach [OPTIONS] CONTAINER
  • 别名
bash 复制代码
docker container attach
  • 关键参数
    • --sig-proxy:是否将所有信号代理(默认 true,设置为 false 时,退出 attach 不会影响容器运行)。
  • 样例
bash 复制代码
docker attach mynginx
  1. docker exec
  • 功能:在运行的容器中执行命令。
  • 语法
bash 复制代码
docker exec [OPTIONS] CONTAINER COMMAND [ARG...]
  • 别名
bash 复制代码
docker container exec
  • 关键参数
    • -d:分离模式,在后台运行;
    • -i:即使没有附加也保持 STDIN 打开;
    • -t:分配一个伪终端;
    • -e:设置环境变量;
    • -u, --user:指定用户(格式为"<name|uid>[:<group|gid>]");
    • -w, --workdir:指定工作目录。
  • 样例
bash 复制代码
# 在容器 mynginx 中以交互模式执行 echo 命令
docker exec -it mynginx echo "Hello bit"

# 在容器 mynginx 中以交互模式打开 shell
docker exec -it mynginx bash
  1. docker start
  • 功能:启动停止状态或初建状态的容器。
  • 语法
bash 复制代码
docker start [OPTIONS] CONTAINER [CONTAINER...]
  • 别名
bash 复制代码
docker container start
  • 样例
bash 复制代码
docker start mynginx
  1. docker stop
  • 功能:停止运行中的容器。
  • 语法
bash 复制代码
docker stop [OPTIONS] CONTAINER [CONTAINER...]
  • 别名
bash 复制代码
docker container stop
  • 关键参数
    • -s:指定发送的信号。
  • 样例
bash 复制代码
docker stop mynginx
  1. docker restart
  • 功能:重启容器。
  • 语法
bash 复制代码
docker restart [OPTIONS] CONTAINER [CONTAINER...]
  • 别名
bash 复制代码
docker container restart
  • 关键参数
    • -s:指定发送的信号。
  • 样例
bash 复制代码
docker restart mynginx
  1. docker kill
  • 功能:强制退出运行中的容器。
  • 语法
bash 复制代码
docker kill [OPTIONS] CONTAINER [CONTAINER...]
  • 别名
bash 复制代码
docker container kill
  • 关键参数
    • -s:指定发送的信号(默认发送 SIGKILL 信号,docker stop 发送 SIGTERM 信号)。
  • 样例
bash 复制代码
docker kill mynginx
  1. docker top
  • 功能:查看容器中运行的进程信息,支持 ps 命令参数。
  • 语法
bash 复制代码
docker top CONTAINER [ps OPTIONS]
  • 别名
bash 复制代码
docker container top
  • 样例
bash 复制代码
# 查看容器 mynginx 的进程信息
docker top mynginx
  1. docker stats
  • 功能:显示容器资源的使用情况(CPU、内存、网络 I/O、块设备 I/O、进程数)。
  • 语法
bash 复制代码
docker stats [OPTIONS] [CONTAINER...]
  • 别名
bash 复制代码
docker container stats
  • 关键参数
    • --all, -a:显示所有的容器,包括未运行的;
    • --format:指定返回值的模板文件(如 table、json);
    • --no-stream:展示当前状态后直接退出,不实时更新;
    • --no-trunc:不截断输出。
  • 样例
bash 复制代码
# 查看所有运行中容器的资源使用情况
docker stats
  1. docker container inspect
  • 功能:查看容器详细信息(包括配置、网络、挂载、状态等)。
  • 语法
bash 复制代码
docker container inspect [OPTIONS] CONTAINER [CONTAINER...]
  • 关键参数
    • -f:指定返回值的模板文件(如 table、json)。
  • 样例
bash 复制代码
docker container inspect mynginx
  1. docker port
  • 功能:列出指定容器的端口映射,或查找 PRIVATE_PORT 对应的公网端口。
  • 语法
bash 复制代码
docker port CONTAINER [PRIVATE_PORT[/PROTO]]
  • 别名
bash 复制代码
docker container port
  • 样例
bash 复制代码
docker port mynginx
  1. docker cp
  • 功能:在容器和宿主机之间拷贝文件或目录。
  • 语法
bash 复制代码
# 从容器拷贝到宿主机
docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH|-

# 从宿主机拷贝到容器
docker cp [OPTIONS] SRC_PATH|- CONTAINER:DEST_PATH
  • 别名
bash 复制代码
docker container cp
  • 样例
bash 复制代码
# 将主机 /www 目录拷贝到容器 mynginx 的 /www 目录下
docker cp /www/ mynginx:/www/

# 将容器 mynginx 的 /www 目录拷贝到主机的 /wwwbak 目录下
docker cp mynginx:/www/ /wwwbak/
  1. docker diff
  • 功能:检查容器里文件结构的更改。
  • 语法
bash 复制代码
docker diff CONTAINER
  • 样例
bash 复制代码
docker diff mynginx
  1. docker commit
  • 功能:从容器创建一个新的镜像。
  • 语法
bash 复制代码
docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
  • 关键参数
    • -a:指定提交的镜像作者;
    • -c:使用 Dockerfile 指令修改镜像配置;
    • -m:提交时的说明文字;
    • -p:提交时暂停容器。
  • 样例
bash 复制代码
docker commit c3f279d17e0a maxhou/mynginx:v01
  1. docker pause
  • 功能:暂停容器中所有的进程。
  • 语法
bash 复制代码
docker pause CONTAINER [CONTAINER...]
  • 别名
bash 复制代码
docker container pause
  • 样例
bash 复制代码
docker pause mynginx
  1. docker unpause
  • 功能:恢复容器中所有的进程。
  • 语法
bash 复制代码
docker unpause CONTAINER [CONTAINER...]
  • 别名
bash 复制代码
docker container unpause
  • 样例
bash 复制代码
docker unpause mynginx
  1. docker rm
  • 功能:删除一个或多个容器(默认只能删除停止状态的容器)。
  • 语法
bash 复制代码
docker rm [OPTIONS] CONTAINER [CONTAINER...]
  • 别名
bash 复制代码
docker container rm、docker container remove
  • 关键参数
    • -f:通过 SIGKILL 信号强制删除运行中的容器。
  • 样例
bash 复制代码
# 删除停止状态的 mynginx 容器
docker rm mynginx

# 强制删除运行中的 mynginx 容器
docker rm -f mynginx
  1. docker export
  • 功能:导出容器内容为 tar 文件(将容器当前状态打包,丢失元数据和历史记录)。
  • 语法
bash 复制代码
docker export [OPTIONS] CONTAINER
  • 别名
bash 复制代码
docker container export
  • 关键参数
    • -o:指定输出文件路径。
  • 样例
bash 复制代码
# 导出容器 mynginx 为 tar 文件
docker export -o mynginx202203.tar mynginx
  1. docker wait
  • 功能:阻塞运行直到容器停止,然后打印其退出代码。
  • 语法
bash 复制代码
docker wait CONTAINER [CONTAINER...]
  • 别名
bash 复制代码
docker container wait
  • 样例
bash 复制代码
docker wait mynginx
  1. docker rename
  • 功能:重命名容器。
  • 语法
bash 复制代码
docker rename CONTAINER NEW_NAME
  • 别名
bash 复制代码
docker container rename
  • 样例
bash 复制代码
docker rename mynginx myweb
  1. docker container prune
  • 功能:删除所有停止状态的容器。
  • 语法
bash 复制代码
docker container prune [OPTIONS]
  • 关键参数
    • -f, --force:不提示确认,直接删除。
  • 样例
bash 复制代码
docker container prune
  1. docker update
  • 功能:更新容器配置(如资源限制)。
  • 语法
bash 复制代码
docker update [OPTIONS] CONTAINER [CONTAINER...]
  • 别名
bash 复制代码
docker container update
  • 关键参数
    • --cpus:设置 CPU 数量;
    • --cpuset-cpus:指定容器可使用的 CPU 核心;
    • --memory:设置内存限制;
    • --memory-swap:设置交换内存限制;
    • --cpu-period:CPU 资源重新分配周期;
    • --cpu-quota:周期内容器可使用的 CPU 时间。
  • 样例
bash 复制代码
# 更新容器 myweb 的最大内存为 400m
docker update -m 400m myweb
相关推荐
Suchadar3 小时前
Docker常用命令
运维·docker·容器
你才是臭弟弟3 小时前
MinIo开发环境配置方案(Docker版本)
运维·docker·容器
七夜zippoe4 小时前
Docker容器化Python应用最佳实践:从镜像优化到安全防护
python·docker·云原生·eureka·容器化
卓码软件测评5 小时前
第三方软件课题验收测试【使用Docker容器部署LoadRunner负载生成器以实现弹性压测 】
测试工具·docker·容器·性能优化·单元测试·测试用例
Knight_AL5 小时前
Dockerfile 的 EXPOSE 和 Docker Compose 的 ports 有什么区别?
docker·容器·eureka
你才是臭弟弟5 小时前
Docker 拉取 Kafka 镜像及策略配置
docker·容器·kafka
春日见6 小时前
在 Windows中,WSL与Docker的关系
运维·开发语言·c++·windows·docker·容器
醇氧6 小时前
window11 运行 Docker Compose
运维·docker·容器
叼奶嘴的超人6 小时前
手动创建Docker版Fastapi CI/CD镜像文件
ci/cd·docker·fastapi