Docker 常用命令
一、镜像管理
镜像是创建容器的基础。
命令 | 说明 | 示例 |
---|---|---|
docker images |
列出本地所有镜像 | docker images |
docker search <镜像名> |
从 Docker Hub 搜索镜像 | docker search nginx |
docker pull <镜像名>[:标签] |
下载镜像(不指定标签则默认为 latest) | docker pull ubuntu:20.04 |
docker rmi <镜像ID或名> |
删除一个本地镜像 | docker rmi 1234567890ab |
docker rmi $(docker images -q) |
强制删除所有本地镜像 | docker rmi -f $(docker images -q) |
docker build -t <标签名> <路径> |
根据 Dockerfile 构建镜像 | docker build -t my-app . |
docker tag <源镜像> <新镜像> |
给镜像打一个新的标签 | docker tag my-app:latest my-registry.com/my-app:v1 |
docker push <镜像名> |
将镜像推送到仓库 | docker push my-registry.com/my-app:v1 |
docker save -o <文件名>.tar <镜像名> |
将镜像保存为 tar 文件(用于备份迁移) | docker save -o my-app.tar my-app:latest |
docker load -i <文件名>.tar |
从 tar 文件加载镜像 | docker load -i my-app.tar |
docker history <镜像名> |
查看镜像的构建历史 | docker history my-app |
二、容器生命周期管理
容器是镜像的运行实例。
命令 | 说明 | 示例 |
---|---|---|
docker run [选项] <镜像> |
创建并启动一个新容器 | 见下方详细说明 |
docker start <容器名/ID> |
启动一个已存在的容器 | docker start my-container |
docker stop <容器名/ID> |
停止一个运行中的容器(优雅停止) | docker stop my-container |
docker restart <容器名/ID> |
重启容器 | docker restart my-container |
docker kill <容器名/ID> |
强制停止一个容器(发送 SIGKILL) | docker kill my-container |
docker pause <容器名/ID> |
暂停容器内的所有进程 | docker pause my-container |
docker unpause <容器名/ID> |
恢复容器内的所有进程 | docker unpause my-container |
docker rm <容器名/ID> |
删除一个已停止的容器 | docker rm my-container |
docker rm -f <容器名/ID> |
强制删除一个容器(包括运行中的) | docker rm -f my-container |
docker rm $(docker ps -aq) |
删除所有已停止的容器 | docker rm $(docker ps -aq) |
docker run
常用选项详解:
这是一个最核心也最复杂的命令。
bash
# 基础运行
docker run -d --name my-nginx nginx
# 常用组合选项
docker run -dit --name my-container \
-p 8080:80 \ # 端口映射 (主机端口:容器端口)
-v /host/path:/container/path \ # 数据卷挂载
-e "ENV_VAR=value" \ # 设置环境变量
--network my-network \ # 指定网络
--restart=always \ # 自动重启策略
ubuntu:20.04 /bin/bash
-d
(--detach
): 后台运行容器。-it
: 通常一起使用,-i
保持标准输入打开,-t
分配一个伪终端,用于进入交互式容器。--name
: 为容器指定一个名称。-p
: 端口映射。-v
: 数据卷挂载。-e
: 设置环境变量。--restart
: 自动重启策略(no
,on-failure
,always
,unless-stopped
)。
三、容器信息查看与操作
命令 | 说明 | 示例 |
---|---|---|
docker ps |
列出正在运行的容器 | docker ps |
docker ps -a |
列出所有容器(包括已停止的) | docker ps -a |
docker logs <容器名/ID> |
查看容器的日志 | docker logs my-container |
docker logs -f <容器名/ID> |
实时跟踪(Follow)容器日志 | docker logs -f my-container |
docker exec [选项] <容器> <命令> |
在运行中的容器内执行命令 | 见下方详细说明 |
docker inspect <容器/镜像> |
获取容器/镜像的详细信息(元数据) | docker inspect my-container |
docker top <容器名/ID> |
查看容器内运行的进程 | docker top my-container |
docker stats |
实时显示容器的资源使用统计(CPU、内存等) | docker stats |
docker diff <容器名/ID> |
检查容器文件系统相对于镜像的更改 | docker diff my-container |
docker port <容器名/ID> |
查看容器的端口映射情况 | docker port my-container |
docker exec
常用选项:
bash
# 在运行中的容器内执行一个命令(如 ls)
docker exec my-container ls /app
# 以交互模式进入容器(最常用)
docker exec -it my-container /bin/bash
# 或使用 sh
docker exec -it my-container sh
-i
: 保持 STDIN 打开。-t
: 分配伪终端。-u
: 指定用户名。
四、数据卷管理
数据卷用于持久化容器数据。
命令 | 说明 | 示例 |
---|---|---|
docker volume ls |
列出所有数据卷 | docker volume ls |
docker volume create <卷名> |
创建一个数据卷 | docker volume create my-vol |
docker volume inspect <卷名> |
查看数据卷的详细信息 | docker volume inspect my-vol |
docker volume rm <卷名> |
删除一个数据卷 | docker volume rm my-vol |
docker volume prune |
删除所有未被使用的本地数据卷 | docker volume prune |
五、网络管理
命令 | 说明 | 示例 |
---|---|---|
docker network ls |
列出所有网络 | docker network ls |
docker network create <网络名> |
创建一个新的网络 | docker network create my-bridge |
docker network inspect <网络名> |
查看网络的详细信息 | docker network inspect bridge |
docker network connect <网络> <容器> |
将容器连接到指定网络 | docker network connect my-net my-container |
docker network disconnect <网络> <容器> |
断开容器与指定网络的连接 | docker network disconnect my-net my-container |
docker network rm <网络名> |
删除一个网络 | docker network rm my-net |
docker network prune |
删除所有未被使用的网络 | docker network prune |
六、系统与清理命令
命令 | 说明 | 示例 |
---|---|---|
docker info |
显示 Docker 系统范围的信息 | docker info |
docker version |
显示 Docker 版本信息 | docker version |
docker system df |
查看 Docker 磁盘使用情况 | docker system df |
docker system prune |
一键清理:删除所有停止的容器、未被使用的网络、构建缓存和所有未被容器引用的镜像。 | docker system prune |
docker system prune -a |
更彻底的一键清理 :在上述基础上,额外删除所有未被使用的镜像。慎用! | docker system prune -a |
实用命令组合示例
1.进入一个正在运行的容器:
bash
docker exec -it <container_name_or_id> /bin/bash
2.从宿主机复制文件到容器:
bash
docker cp /path/on/host/file.txt <container_name>:/path/in/container/
3.从容器复制文件到宿主机
bash
docker cp <container_name>:/path/in/container/file.txt /path/on/host/
4.查看容器 IP 地址:
bash
docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' <container_name>