Docker 常见命令大全:从镜像管理到容器操作
Docker 命令是使用 Docker 的基础,涵盖镜像检索、容器管理、数据卷操作等核心功能。本文系统整理 Docker 常用命令,按功能分类并说明其用法和场景,帮助快速掌握 Docker 操作。
基础命令
1. 查看 Docker 版本
1 2 3
| docker -v # 简洁版本信息 # 或 docker version # 详细版本信息(包括客户端和服务端)
|
2. 帮助命令
1 2
| docker --help # 查看所有命令帮助 docker [command] --help # 查看特定命令帮助(如docker run --help)
|
3. 启动 / 停止 Docker 服务
1 2 3 4 5 6 7 8 9 10 11
| # 启动Docker(Linux) sudo systemctl start docker
# 停止Docker(Linux) sudo systemctl stop docker
# 重启Docker(Linux) sudo systemctl restart docker
# 查看Docker状态(Linux) sudo systemctl status docker
|
镜像命令
镜像是 Docker 的核心组件,以下命令用于镜像的检索、下载、管理等操作。
1. 检索镜像
从 Docker Hub 搜索镜像:
1 2 3
| docker search <镜像名[:版本]> # 示例:搜索nginx镜像 docker search nginx
|
输出字段说明:
NAME
:镜像仓库名称
DESCRIPTION
:镜像描述
STARS
:收藏数(反映受欢迎程度)
OFFICIAL
:是否为官方镜像([OK]
表示官方)
AUTOMATED
:是否自动构建
2. 下载镜像
从注册中心拉取镜像到本地:
1 2 3 4 5
| docker pull <镜像名[:tag]> # 示例1:拉取最新版nginx(tag为latest) docker pull nginx # 示例2:拉取指定版本nginx(如1.23) docker pull nginx:1.23
|
- 不指定
tag
时,默认拉取latest
版本(最新版)。
3. 查看本地镜像列表
1 2 3 4
| docker images # 可选参数: # -a:显示所有镜像(包括中间层) # -q:仅显示镜像ID
|
输出字段说明:
REPOSITORY
:镜像仓库名称
TAG
:镜像标签(版本标识)
IMAGE ID
:镜像唯一 ID
CREATED
:镜像创建时间
SIZE
:镜像大小
4. 删除镜像
1 2 3 4 5 6 7 8
| # 通过镜像名+tag删除 docker rmi <镜像名:tag> # 或通过镜像ID删除 docker rmi <镜像ID> # 强制删除(即使镜像被容器引用) docker rmi -f <镜像ID> # 批量删除所有镜像 docker rmi $(docker images -q)
|
5. 镜像详细信息
查看镜像的元数据(如构建历史、环境变量、配置等):
1 2 3
| docker inspect <镜像名:tag 或 镜像ID> # 示例:查看nginx镜像详情 docker inspect nginx:latest
|
6. 镜像导出与导入
导出镜像(保存为本地文件)
1 2 3
| docker save <镜像名:tag> > <导出路径/文件名.tar> # 示例:导出nginx镜像到当前目录 docker save nginx:latest > nginx.tar
|
导入镜像(从本地文件加载)
1 2 3
| docker load < <镜像文件.tar> # 示例:导入nginx镜像 docker load < nginx.tar
|
7. 为镜像设置标签
给本地镜像添加新标签(常用于版本管理或推送至私有仓库):
1 2 3
| docker tag <源镜像名:tag> <目标镜像名:新tag> # 示例:将本地nginx镜像标记为私有仓库版本 docker tag nginx:latest registry.example.com/nginx:v1.0
|
8. 构建镜像(从 Dockerfile)
通过 Dockerfile 构建自定义镜像:
1 2 3
| docker build -t <镜像名:tag> <Dockerfile所在目录> # 示例:在当前目录构建名为myapp:v1的镜像 docker build -t myapp:v1 .
|
-t
:指定镜像名称和标签
- 最后一个
.
表示 Dockerfile 在当前目录
容器命令
容器是镜像的运行实例,以下命令用于容器的创建、启动、管理等操作。
1. 创建容器(不启动)
1 2 3
| docker create --name <容器名> <镜像名:tag> # 示例:创建一个名为mynginx的nginx容器(未启动) docker create --name mynginx nginx:latest
|
2. 创建并启动容器
最常用的命令,一次性完成容器创建和启动:
1 2 3 4 5 6
| docker run [参数] <镜像名:tag> [容器内命令] # 示例1:启动一个后台运行的nginx容器,映射宿主机8080端口到容器80端口 docker run -d --name mynginx -p 8080:80 nginx:latest
# 示例2:启动一个交互式centos容器(进入bash终端) docker run -it --name mycentos centos:7 /bin/bash
|
核心参数说明:
-d
:后台运行容器(守护进程模式)
-it
:交互式运行(-i
保持标准输入打开,-t
分配伪终端)
--name
:指定容器名称(不指定则自动生成)
-p
:端口映射(格式:宿主机端口:容器端口
)
-P
:随机映射容器暴露的端口到宿主机
--rm
:容器停止后自动删除
3. 查看容器列表
1 2 3 4 5 6
| docker ps # 可选参数: # -a:显示所有容器(包括已停止的) # -l:显示最近创建的容器 # -n <数字>:显示最近n个容器 # -q:仅显示容器ID
|
输出字段说明:
CONTAINER ID
:容器唯一 ID
IMAGE
:容器基于的镜像
COMMAND
:容器启动时执行的命令
CREATED
:容器创建时间
STATUS
:容器状态(Up
运行中,Exited
已停止)
PORTS
:端口映射信息
NAMES
:容器名称
4. 进入运行中的容器
1 2 3 4 5 6 7
| # 方式1:attach(不推荐,退出会导致容器停止) docker attach <容器ID 或 容器名>
# 方式2:exec(推荐,在容器内执行命令,支持交互式终端) docker exec -it <容器ID 或 容器名> <命令> # 示例:进入mynginx容器的bash终端 docker exec -it mynginx /bin/bash
|
5. 启动 / 停止 / 重启容器
1 2 3 4 5 6 7 8 9 10 11
| # 启动已停止的容器 docker start <容器ID 或 容器名>
# 停止运行中的容器(优雅关闭) docker stop <容器ID 或 容器名>
# 强制停止容器(立即终止) docker kill <容器ID 或 容器名>
# 重启容器 docker restart <容器ID 或 容器名>
|
6. 删除容器
1 2 3 4 5 6
| # 删除已停止的容器 docker rm <容器ID 或 容器名> # 强制删除运行中的容器 docker rm -f <容器ID 或 容器名> # 批量删除所有已停止容器 docker rm $(docker ps -a -q)
|
7. 查看容器日志
1 2 3
| docker logs [参数] <容器ID 或 容器名> # 示例:实时查看mynginx容器的日志 docker logs -f mynginx
|
常用参数:
-f
:实时跟踪日志输出
-t
:显示日志时间戳
--tail <数字>
:仅显示最后 n 行日志(如--tail 100
)
8. 查看容器进程
查看容器内运行的进程:
1 2 3
| docker top <容器ID 或 容器名> # 示例:查看mynginx容器的进程 docker top mynginx
|
9. 容器与宿主机文件传输
1 2 3 4 5 6 7 8 9
| # 从宿主机复制文件到容器 docker cp <宿主机文件路径> <容器ID 或 容器名>:<容器内路径> # 示例:将本地file.txt复制到mynginx的/usr/share/nginx/html目录 docker cp file.txt mynginx:/usr/share/nginx/html/
# 从容器复制文件到宿主机 docker cp <容器ID 或 容器名>:<容器内文件路径> <宿主机路径> # 示例:将mynginx的nginx.conf复制到本地当前目录 docker cp mynginx:/etc/nginx/nginx.conf .
|
10. 容器导出与导入
导出容器(保存为镜像文件)
1 2 3
| docker export <容器ID 或 容器名> > <导出路径/文件名.tar> # 示例:导出mynginx容器 docker export mynginx > mynginx_container.tar
|
导入容器(生成镜像)
1 2 3
| docker import <容器文件.tar> <镜像名:tag> # 示例:从容器文件创建镜像 docker import mynginx_container.tar mynginx:from-container
|
- 与
docker save/load
的区别:export
导出的是容器运行时状态,save
导出的是完整镜像(包括历史层)。
11. 修改容器配置
动态更新容器的资源限制、重启策略等:
1 2 3 4 5 6
| docker update [参数] <容器ID 或 容器名> # 示例1:限制容器最多使用1核CPU docker update --cpus 1 mynginx
# 示例2:设置容器退出后自动重启 docker update --restart always mynginx
|
常用参数:
--restart
:重启策略(always
总是重启,on-failure
失败时重启)
-m
:内存限制(如-m 1g
限制 1GB 内存)
--cpus
:CPU 核心数限制
数据卷命令
数据卷用于容器与宿主机之间的数据持久化和共享。
1. 查看数据卷列表
2. 创建数据卷
1 2 3
| docker volume create <数据卷名> # 示例:创建名为myvolume的数据卷 docker volume create myvolume
|
3. 查看数据卷详情
1 2 3
| docker volume inspect <数据卷名> # 示例:查看myvolume的详细信息(包括存储路径) docker volume inspect myvolume
|
4. 删除数据卷
1 2 3 4 5
| docker volume rm <数据卷名> # 强制删除正在使用的数据卷 docker volume rm -f <数据卷名> # 清理未使用的数据卷 docker volume prune
|
网络命令(基础)
1. 查看网络列表
2. 创建网络
1 2 3
| docker network create <网络名> # 示例:创建名为mynet的桥接网络 docker network create mynet
|
3. 连接容器到网络
1 2 3
| docker network connect <网络名> <容器名> # 示例:将mynginx容器连接到mynet网络 docker network connect mynet mynginx
|
常用场景示例
1. 运行一个 Nginx 服务
1 2
| # 后台运行,映射80端口,容器名mynginx docker run -d --name mynginx -p 80:80 nginx:latest
|
2. 运行一个 MySQL 服务(带数据持久化)
1 2 3 4 5 6
| # 数据卷持久化数据,设置root密码,映射3306端口 docker run -d --name mymysql \ -p 3306:3306 \ -v mysql-data:/var/lib/mysql \ -e MYSQL_ROOT_PASSWORD=123456 \ mysql:8.0
|
3. 查看容器资源使用情况
1 2 3
| docker stats # 查看指定容器的资源使用 docker stats <容器名>
|
总结
Docker 命令按功能可分为镜像管理、容器操作、数据卷管理等类别,掌握这些命令是使用 Docker 的基础。实际应用中,常用命令包括docker run
(启动容器)、docker ps
(查看容器)、docker pull
(拉取镜像)等。结合 Dockerfile 和编排工具(如 Docker Compose),可实现更复杂的应用部署和管理
v1.3.10