Docker 作为一种轻量级的容器化技术,已成为现代软件开发和运维的核心工具,通过容器技术,开发者可以将应用及其依赖打包到一个可移植的容器中,实现“一次构建,处处运行”,在 Docker 容器的使用过程中,调用命令是与容器交互、管理容器生命周期以及执行容器内操作的关键手段,本文将详细介绍 Docker 容器的常用命令分类、具体用法及实际应用场景,帮助读者全面掌握 Docker 容器的命令调用方法。

容器生命周期管理命令
容器的生命周期管理包括创建、启动、停止、重启和删除等操作,这些是使用 Docker 容器的基础命令。
-
创建并启动容器
docker run
是最常用的命令,用于基于镜像创建并启动一个新的容器,其基本语法为docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
,常用选项包括:-d
:后台运行容器;-p
:端口映射,格式为主机端口:容器端口
;--name
:为容器指定名称;-v
:挂载主机目录到容器,格式为主机目录:容器目录
;-e
:设置环境变量。
运行一个 Nginx 容器并映射端口:docker run -d --name my-nginx -p 8080:80 nginx
。
-
启动已停止的容器
使用docker start [容器ID或名称]
命令可以启动已停止的容器。docker start my-nginx
。 -
停止运行中的容器
docker stop [容器ID或名称]
命令用于优雅地停止容器(发送 SIGTERM 信号)。docker stop my-nginx
,若需强制停止,可使用docker kill
命令。(图片来源网络,侵删) -
重启容器
docker restart [容器ID或名称]
命令会先停止再启动容器,适用于应用重启场景。docker restart my-nginx
。 -
删除容器
docker rm [容器ID或名称]
用于删除已停止的容器,若需删除正在运行的容器,需添加-f
选项。docker rm -f my-nginx
,批量删除容器时,可结合docker ps -aq
命令使用:docker rm $(docker ps -aq)
。
容器状态查看与交互命令
在容器运行过程中,查看容器状态、日志或进入容器内部进行调试是常见需求。
-
查看容器列表
(图片来源网络,侵删)docker ps
:显示正在运行的容器,添加-a
选项可查看所有容器(包括停止的容器);docker ps -q
:仅显示容器的 ID,适用于脚本操作。
-
查看容器日志
docker logs [容器ID或名称]
命令用于查看容器的标准输出日志,常用选项:-f
:实时跟踪日志输出;--tail
:显示最后 N 行日志,docker logs --tail 100 my-nginx
。
-
进入容器内部
docker exec
:在运行中的容器中执行命令,常用-it
选项进入交互模式。docker exec -it my-nginx /bin/bash
,进入容器后可执行 shell 命令;docker attach
:直接附加到容器的标准输入、输出和错误流,但退出时会停止容器(不推荐调试使用)。
-
查看容器详细信息
docker inspect [容器ID或名称]
命令以 JSON 格式返回容器的元数据,包括 IP 地址、挂载点、环境变量等,可通过-f
选项过滤特定信息,例如查看容器 IP:docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' my-nginx
。
容器资源管理与文件操作
在容器化部署中,资源限制和文件传输是确保应用稳定运行的关键。
-
资源限制
docker run
命令可通过选项限制容器的 CPU 和内存使用:--cpus
:限制 CPU 核心数,--cpus=1.5
表示最多使用 1.5 个核心;--memory
:限制内存使用,--memory=512m
表示最大使用 512MB 内存。
-
文件传输与挂载
- 挂载卷:通过
-v
或--mount
选项将主机目录或数据卷挂载到容器,实现数据持久化。docker run -d -v /host/data:/container/data nginx
; - 复制文件:
docker cp [容器ID或名称]:容器路径 主机路径
可从容器复制文件到主机,docker cp my-nginx:/usr/share/nginx/html/index.html ./
。
- 挂载卷:通过
容器网络与存储管理命令
Docker 的网络和存储功能是支撑容器化应用的重要组件。
-
网络管理
- 创建自定义网络:
docker network create my-network
; - 运行容器时指定网络:
docker run -d --name my-app --network my-network nginx
; - 查看网络详情:
docker network inspect my-network
。
- 创建自定义网络:
-
数据卷管理
- 创建数据卷:
docker volume create my-volume
; - 使用数据卷:
docker run -d -v my-volume:/container/data nginx
; - 查看数据卷信息:
docker volume inspect my-volume
。
- 创建数据卷:
实际应用场景示例
以下通过表格总结常见操作场景的命令组合:
场景描述 | 命令示例 |
---|---|
运行一个 MySQL 容器 | docker run -d --name mysql-db -e MYSQL_ROOT_PASSWORD=123456 -p 3306:3306 mysql:8.0 |
备份容器数据 | docker exec my-nginx tar czf - /usr/share/nginx/html | gzip > backup.tar.gz |
实时查看容器资源使用 | docker stats [容器ID或名称] |
清理所有停止的容器 | docker container prune |
相关问答 FAQs
问题 1:如何查看容器内部正在运行的进程?
解答:可以使用 docker top [容器ID或名称]
命令查看容器内进程的实时状态,类似于 Linux 系统中的 top
命令。docker top my-nginx
会显示容器内进程的 PID、CPU 使用率、命令等信息。
问题 2:容器启动失败时如何排查问题?
解答:可通过以下步骤排查:
- 使用
docker logs [容器ID或名称]
查看容器启动日志,定位错误信息; - 检查镜像是否存在或版本正确,通过
docker images
查看; - 确认端口是否被占用,使用
netstat -tlnp | grep 端口号
检查; - 尝试使用
docker run --rm -it [镜像名]
进入容器调试,或通过docker inspect
检查容器配置。