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