文章目录
-
- [一、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 容器命令详解
- 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
- 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
- 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
- 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
- docker attach
- 功能:连接到正在运行中的容器。
- 语法:
bash
docker attach [OPTIONS] CONTAINER
- 别名:
bash
docker container attach
- 关键参数 :
--sig-proxy:是否将所有信号代理(默认 true,设置为 false 时,退出 attach 不会影响容器运行)。
- 样例:
bash
docker attach mynginx
- 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
- docker start
- 功能:启动停止状态或初建状态的容器。
- 语法:
bash
docker start [OPTIONS] CONTAINER [CONTAINER...]
- 别名:
bash
docker container start
- 样例:
bash
docker start mynginx
- docker stop
- 功能:停止运行中的容器。
- 语法:
bash
docker stop [OPTIONS] CONTAINER [CONTAINER...]
- 别名:
bash
docker container stop
- 关键参数 :
-s:指定发送的信号。
- 样例:
bash
docker stop mynginx
- docker restart
- 功能:重启容器。
- 语法:
bash
docker restart [OPTIONS] CONTAINER [CONTAINER...]
- 别名:
bash
docker container restart
- 关键参数 :
-s:指定发送的信号。
- 样例:
bash
docker restart mynginx
- docker kill
- 功能:强制退出运行中的容器。
- 语法:
bash
docker kill [OPTIONS] CONTAINER [CONTAINER...]
- 别名:
bash
docker container kill
- 关键参数 :
-s:指定发送的信号(默认发送 SIGKILL 信号,docker stop发送 SIGTERM 信号)。
- 样例:
bash
docker kill mynginx
- docker top
- 功能:查看容器中运行的进程信息,支持 ps 命令参数。
- 语法:
bash
docker top CONTAINER [ps OPTIONS]
- 别名:
bash
docker container top
- 样例:
bash
# 查看容器 mynginx 的进程信息
docker top mynginx
- 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
- docker container inspect
- 功能:查看容器详细信息(包括配置、网络、挂载、状态等)。
- 语法:
bash
docker container inspect [OPTIONS] CONTAINER [CONTAINER...]
- 关键参数 :
-f:指定返回值的模板文件(如 table、json)。
- 样例:
bash
docker container inspect mynginx
- docker port
- 功能:列出指定容器的端口映射,或查找 PRIVATE_PORT 对应的公网端口。
- 语法:
bash
docker port CONTAINER [PRIVATE_PORT[/PROTO]]
- 别名:
bash
docker container port
- 样例:
bash
docker port mynginx
- 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/
- docker diff
- 功能:检查容器里文件结构的更改。
- 语法:
bash
docker diff CONTAINER
- 样例:
bash
docker diff mynginx
- docker commit
- 功能:从容器创建一个新的镜像。
- 语法:
bash
docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
- 关键参数 :
-a:指定提交的镜像作者;-c:使用 Dockerfile 指令修改镜像配置;-m:提交时的说明文字;-p:提交时暂停容器。
- 样例:
bash
docker commit c3f279d17e0a maxhou/mynginx:v01
- docker pause
- 功能:暂停容器中所有的进程。
- 语法:
bash
docker pause CONTAINER [CONTAINER...]
- 别名:
bash
docker container pause
- 样例:
bash
docker pause mynginx
- docker unpause
- 功能:恢复容器中所有的进程。
- 语法:
bash
docker unpause CONTAINER [CONTAINER...]
- 别名:
bash
docker container unpause
- 样例:
bash
docker unpause mynginx
- 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
- docker export
- 功能:导出容器内容为 tar 文件(将容器当前状态打包,丢失元数据和历史记录)。
- 语法:
bash
docker export [OPTIONS] CONTAINER
- 别名:
bash
docker container export
- 关键参数 :
-o:指定输出文件路径。
- 样例:
bash
# 导出容器 mynginx 为 tar 文件
docker export -o mynginx202203.tar mynginx
- docker wait
- 功能:阻塞运行直到容器停止,然后打印其退出代码。
- 语法:
bash
docker wait CONTAINER [CONTAINER...]
- 别名:
bash
docker container wait
- 样例:
bash
docker wait mynginx
- docker rename
- 功能:重命名容器。
- 语法:
bash
docker rename CONTAINER NEW_NAME
- 别名:
bash
docker container rename
- 样例:
bash
docker rename mynginx myweb
- docker container prune
- 功能:删除所有停止状态的容器。
- 语法:
bash
docker container prune [OPTIONS]
- 关键参数 :
-f, --force:不提示确认,直接删除。
- 样例:
bash
docker container prune
- 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