🐳 Docker命令完全指南:从入门到精通
📖 文档简介
这是一份全面、实用的Docker命令参考手册,专为Docker初学者和开发者设计。文档涵盖了Docker的核心命令,包括镜像管理、容器操作、网络配置、数据卷管理以及Docker Compose的使用方法。
✨ 文档特色
- 📚 全面覆盖:包含Docker常用命令的完整语法和参数详解
- 🎯 实用示例:每个命令都配有实际操作示例,便于理解和应用
- 🤔 新手友好:详细的参数注解,让初学者一目了然
- 🔄 与时俱进:采用最新的Docker命令语法(如
docker compose)
- 💡 场景驱动:针对不同使用场景提供最佳实践建议
🎯 适用人群
- Docker初学者,想要快速掌握Docker命令
- 开发者,需要一份便捷的Docker命令参考手册
- 运维人员,负责Docker环境的管理和维护
- 学生和教育工作者,用于学习和教学参考
📝 写在前面
在之前的分享中,我主要介绍了如何使用Docker部署各类项目。不少小伙伴反馈对Docker的命令及语法还不够熟悉,因此今天特意整理了这篇全面、实用的Docker常用命令详解。希望通过这份文档,能帮助大家更深入地理解和掌握Docker命令,为容器化技术的学习和应用打下坚实基础。
GitHub地址:Docker命令速查表,欢迎下载收藏、Star支持!
🚀开始使用
文档按照Docker的功能模块进行组织,您可以根据需要直接跳转到感兴趣的章节:
让我们开始探索Docker命令的世界,掌握容器化技术的核心工具!
一、镜像相关命令
1. docker images
语法:docker images [OPTIONS] [REPOSITORY[:TAG]]
功能:列出本地镜像
常用参数详解:
-a, --all:显示所有镜像(包括中间层镜像)。默认情况下,只会显示顶层镜像,使用此参数可以查看所有构建过程中产生的中间层镜像。
-q, --quiet:只显示镜像ID,常用于脚本中获取镜像ID。
--digests:显示镜像的摘要信息,摘要是基于镜像内容计算的唯一标识。
示例:
# 列出所有本地镜像(默认只显示顶层镜像)
docker images
# 只显示镜像ID,适合脚本使用
docker images -q
# 列出特定仓库的镜像,这里只显示ubuntu相关镜像
docker images ubuntu
2. docker pull
语法:docker pull [OPTIONS] NAME[:TAG|@DIGEST]
功能:从镜像仓库拉取镜像到本地
常用参数详解:
-a, --all-tags:拉取指定仓库的所有标签镜像。默认只拉取latest标签的镜像,使用此参数会下载该仓库的所有版本镜像。
示例:
# 拉取最新版ubuntu镜像(默认标签为latest)
docker pull ubuntu
# 拉取指定版本的ubuntu镜像,明确指定标签为20.04
docker pull ubuntu:20.04
# 拉取所有标签的ubuntu镜像,会下载该仓库的所有版本
docker pull -a ubuntu
3. docker build
语法:docker build [OPTIONS] PATH | URL | -
功能:根据Dockerfile构建镜像
常用参数详解:
-t, --tag:指定镜像名称和标签,格式为 name:tag。name是镜像名称,tag是版本标识,如myapp:1.0。
-f, --file:指定Dockerfile的路径。默认情况下会在当前目录查找名为Dockerfile的文件,此参数可指定其他位置的Dockerfile。
--no-cache:构建镜像时不使用缓存。默认会使用缓存加速构建,使用此参数会强制重新构建所有层。
示例:
# 在当前目录构建镜像,指定标签为myapp:1.0
docker build -t myapp:1.0 .
# 指定Dockerfile路径构建镜像,使用当前目录外的Dockerfile.prod文件
docker build -t myapp:1.0 -f ./Dockerfile.prod .
# 不使用缓存构建镜像,强制重新构建所有层
docker build --no-cache -t myapp:1.0 .
4. docker rmi
语法:docker rmi [OPTIONS] IMAGE [IMAGE...]
功能:删除本地镜像
常用参数详解:
-f, --force:强制删除镜像。当镜像被容器使用时,默认无法删除,使用此参数可强制删除。
示例:
# 删除指定镜像,当镜像未被使用时可以正常删除
docker rmi ubuntu:20.04
# 强制删除镜像,即使镜像被容器使用也会删除
docker rmi -f ubuntu:20.04
# 删除多个镜像,一次删除多个指定镜像
docker rmi ubuntu:18.04 ubuntu:20.04
5. docker push
语法:docker push [OPTIONS] NAME[:TAG]
功能:将本地镜像推送到镜像仓库
常用参数详解:
- 无特殊常用参数,主要通过镜像名称指定仓库地址和标签。
示例:
# 推送镜像到Docker Hub,需要先登录Docker Hub
docker push username/myapp:1.0
# 推送镜像到私有仓库,指定私有仓库地址
docker push registry.example.com/myapp:1.0
二、容器相关命令
1. docker run
语法:docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
功能:创建并运行一个新容器
常用参数详解:
-d, --detach:后台运行容器,容器启动后不会占用终端。
-p, --publish:将容器的端口映射到主机,格式为 主机端口:容器端口,如 80:80。
-v, --volume:挂载数据卷或主机目录到容器,格式为 主机路径:容器路径,如 /host/path:/container/path。
-e, --env:设置环境变量,格式为 KEY=VALUE,如 MYSQL_ROOT_PASSWORD=123456。
--name:指定容器名称,默认会生成随机名称。
-i, --interactive:保持STDIN打开,允许交互式输入。
-t, --tty:分配伪终端,与 -i一起使用可进入交互式终端。
示例:
# 后台运行nginx容器,将主机80端口映射到容器80端口,命名为mynginx
docker run -d -p 80:80 --name mynginx nginx
# 交互式运行ubuntu容器,进入bash终端
docker run -it ubuntu /bin/bash
# 挂载主机目录到容器,实现数据持久化
docker run -d -p 80:80 -v /host/path:/container/path nginx
# 设置环境变量运行mysql容器,指定root密码
docker run -d -e MYSQL_ROOT_PASSWORD=123456 mysql
2. docker ps
语法:docker ps [OPTIONS]
功能:列出容器
常用参数详解:
-a, --all:显示所有容器,包括正在运行和已停止的容器。
-q, --quiet:只显示容器ID,常用于脚本中获取容器ID。
-l, --latest:显示最近创建的容器,无论其状态如何。
示例:
# 列出正在运行的容器(默认行为)
docker ps
# 列出所有容器,包括已停止的
docker ps -a
# 只显示容器ID,适合脚本使用
docker ps -q
3. docker start/stop/restart
语法:
docker start [OPTIONS] CONTAINER [CONTAINER...]
docker stop [OPTIONS] CONTAINER [CONTAINER...]
docker restart [OPTIONS] CONTAINER [CONTAINER...]
功能:启动、停止、重启容器
常用参数详解:
- 无特殊常用参数,主要通过容器名称或ID指定操作对象。
示例:
# 启动已停止的容器,使用容器名称mynginx
docker start mynginx
# 停止运行中的容器,使用容器名称mynginx
docker stop mynginx
# 重启容器,相当于先stop再start
docker restart mynginx
4. docker exec
语法:docker exec [OPTIONS] CONTAINER COMMAND [ARG...]
功能:在运行的容器中执行命令
常用参数详解:
-i, --interactive:保持STDIN打开,允许交互式输入。
-t, --tty:分配伪终端,与 -i一起使用可进入容器的交互式终端。
示例:
# 在容器中执行命令,查看nginx的html目录内容
docker exec mynginx ls -la /usr/share/nginx/html
# 进入容器的交互式终端,使用bash命令
docker exec -it mynginx /bin/bash
5. docker logs
语法:docker logs [OPTIONS] CONTAINER
功能:获取容器的日志信息
常用参数详解:
-f, --follow:实时跟踪日志输出,类似于tail -f命令。
--tail:显示日志的最后N行,如 --tail 100显示最后100行。
-t, --timestamps:在日志中显示时间戳,便于查看日志产生的时间。
示例:
# 查看容器的所有日志
docker logs mynginx
# 实时跟踪容器日志,持续显示新产生的日志
docker logs -f mynginx
# 查看容器最后100行日志
docker logs --tail 100 mynginx
6. docker rm
语法:docker rm [OPTIONS] CONTAINER [CONTAINER...]
功能:删除容器
常用参数详解:
-f, --force:强制删除运行中的容器。默认只能删除已停止的容器,使用此参数可强制删除运行中的容器。
-v, --volumes:删除与容器关联的数据卷。默认只删除容器,使用此参数会同时删除容器挂载的数据卷。
示例:
# 删除已停止的容器,使用容器名称mynginx
docker rm mynginx
# 强制删除运行中的容器
docker rm -f mynginx
# 删除多个容器,指定多个容器名称或ID
docker rm container1 container2
三、网络相关命令
1. docker network ls
语法:docker network ls [OPTIONS]
功能:列出Docker环境中的所有网络
常用参数详解:
-q, --quiet:只显示网络ID,常用于脚本中获取网络ID。
示例:
# 列出所有网络,显示网络ID、名称、驱动类型等信息
docker network ls
# 只显示网络ID,适合脚本使用
docker network ls -q
2. docker network create
语法:docker network create [OPTIONS] NETWORK
功能:创建一个新的Docker网络
常用参数详解:
--driver:指定网络驱动类型,常用驱动有:
bridge:默认驱动,创建桥接网络
overlay:用于Swarm集群的跨主机网络
macvlan:为容器分配MAC地址,使其看起来像物理设备
host:使用主机网络,容器与主机共享网络命名空间
--subnet:指定子网范围,如 172.20.0.0/16,定义网络的IP地址范围。
--gateway:指定网关地址,如 172.20.0.1,容器通过此网关访问外部网络。
示例:
# 创建一个名为mynet的桥接网络(默认驱动为bridge)
docker network create mynet
# 创建一个指定子网和网关的桥接网络,子网为172.20.0.0/16,网关为172.20.0.1
docker network create --driver bridge --subnet 172.20.0.0/16 --gateway 172.20.0.1 mynet2
3. docker network connect/disconnect
语法:
docker network connect [OPTIONS] NETWORK CONTAINER
docker network disconnect [OPTIONS] NETWORK CONTAINER
功能:将容器连接到指定网络或从指定网络断开
常用参数详解:
--ip:连接容器时指定静态IP地址,仅对自定义网络有效。
示例:
# 将容器连接到网络,使容器可以与同一网络中的其他容器通信
docker network connect mynet mynginx
# 将容器从网络断开,断开后容器无法与该网络中的其他容器通信
docker network disconnect mynet mynginx
# 连接容器时指定静态IP地址
docker network connect --ip 172.20.0.10 mynet mynginx
四、数据卷相关命令
1. docker volume ls
语法:docker volume ls [OPTIONS]
功能:列出Docker环境中的所有数据卷
常用参数详解:
-q, --quiet:只显示数据卷名称,常用于脚本中获取数据卷名称。
示例:
# 列出所有数据卷,显示名称、驱动类型等信息
docker volume ls
# 只显示数据卷名称,适合脚本使用
docker volume ls -q
2. docker volume create
语法:docker volume create [OPTIONS] [VOLUME]
功能:创建一个新的数据卷
常用参数详解:
--driver:指定数据卷驱动类型,默认驱动为 local。
--opt, -o:设置驱动特定的选项,如 --opt type=tmpfs --opt device=tmpfs创建tmpfs类型的数据卷。
示例:
# 创建一个名为myvolume的数据卷,使用默认驱动
docker volume create myvolume
# 创建一个tmpfs类型的数据卷,用于临时存储
docker volume create --driver local --opt type=tmpfs --opt device=tmpfs mytmpvolume
3. docker volume inspect
语法:docker volume inspect [OPTIONS] VOLUME [VOLUME...]
功能:查看数据卷的详细信息,包括挂载点、驱动类型等
常用参数详解:
示例:
# 查看单个数据卷的详细信息
docker volume inspect myvolume
# 查看多个数据卷的详细信息
docker volume inspect myvolume1 myvolume2
4. docker volume rm
语法:docker volume rm [OPTIONS] VOLUME [VOLUME...]
功能:删除数据卷
常用参数详解:
-f, --force:强制删除数据卷,即使数据卷正在被使用。
示例:
# 删除指定的数据卷,数据卷必须未被使用
docker volume rm myvolume
# 强制删除数据卷,即使数据卷正在被使用
docker volume rm -f myvolume
五、其他常用命令
1. docker info
语法:docker info [OPTIONS]
功能:显示Docker系统的详细信息,包括版本、容器数量、镜像数量、存储驱动等
常用参数详解:
示例:
# 查看Docker系统的完整信息
docker info
2. docker version
语法:docker version [OPTIONS]
功能:显示Docker客户端和服务器的版本信息
常用参数详解:
-f, --format:使用Go模板格式化输出,如 {{.Server.Version}}只显示服务器版本。
示例:
# 查看Docker客户端和服务器的版本信息
docker version
# 只显示Docker服务器版本,使用Go模板格式化
docker version --format '{{.Server.Version}}'
3. docker stats
语法:docker stats [OPTIONS] [CONTAINER...]
功能:实时显示容器的资源使用情况,包括CPU、内存、网络I/O等
常用参数详解:
-a, --all:显示所有容器(包括停止的),但停止的容器只会显示0值。
--format:使用Go模板格式化输出。
--no-stream:只显示一次当前状态,不持续更新。
示例:
# 实时查看所有容器的资源使用情况
docker stats
# 实时查看指定容器的资源使用情况
docker stats mynginx
# 只显示一次所有容器的资源使用情况,不持续更新
docker stats --no-stream
4. docker inspect
语法:docker inspect [OPTIONS] NAME|ID [NAME|ID...]
功能:查看Docker对象的详细信息,包括容器、镜像、网络、数据卷等
常用参数详解:
-f, --format:使用Go模板格式化输出,如 {{.NetworkSettings.IPAddress}}只显示容器IP地址。
--type:指定要查看的对象类型,如 container、image、network、volume等。
示例:
# 查看容器的详细信息,包括配置、网络、挂载等
docker inspect mynginx
# 查看镜像的详细信息
docker inspect nginx
# 只查看容器的IP地址,使用Go模板格式化
docker inspect --format '{{.NetworkSettings.IPAddress}}' mynginx
# 只查看特定类型的对象信息,这里指定为容器
docker inspect --type container mynginx
六、Docker Compose命令
1. docker compose up
语法:docker compose up [OPTIONS] [SERVICE...]
功能:根据Compose文件启动并运行所有服务,包括创建容器、网络、数据卷等
常用参数详解:
-d, --detach:后台运行服务,容器启动后不会占用终端。
--build:在启动前重新构建服务镜像,确保使用最新的代码和依赖。
-f, --file:指定Compose文件的路径,默认查找当前目录下的docker-compose.yml文件。
--profile:指定要使用的服务配置文件,用于区分不同环境(如dev、prod)。
--remove-orphans:删除Compose文件中未定义的服务容器。
示例:
# 后台启动所有服务,使用默认的docker-compose.yml文件
docker compose up -d
# 构建并启动服务,确保使用最新的镜像
docker compose up --build
# 使用指定的Compose文件启动服务
docker compose -f docker-compose.prod.yml up -d
# 使用特定配置文件启动服务
docker compose --profile prod up -d
2. docker compose down
语法:docker compose down [OPTIONS]
功能:停止并删除由compose up创建的所有资源,包括容器、网络、数据卷等
常用参数详解:
-v, --volumes:删除与服务关联的数据卷,默认只删除容器和网络。
--rmi:删除由compose创建的镜像,可选项有 all(删除所有镜像)、local(删除本地构建的镜像)。
-f, --file:指定Compose文件的路径。
--profile:指定要停止的服务配置文件。
示例:
# 停止并删除所有服务,保留数据卷
docker compose down
# 停止并删除所有服务和数据卷,彻底清理资源
docker compose down -v
# 停止并删除所有服务、数据卷和本地构建的镜像
docker compose down -v --rmi local
# 使用指定的Compose文件停止服务
docker compose -f docker-compose.prod.yml down
3. docker compose ps
语法:docker compose ps [OPTIONS] [SERVICE...]
功能:列出由Compose管理的所有服务容器的状态
常用参数详解:
-a, --all:显示所有容器,包括已停止的容器。
-q, --quiet:只显示容器ID。
-f, --file:指定Compose文件的路径。
--profile:指定要查看的服务配置文件。
示例:
# 列出所有服务容器的状态
docker compose ps
# 列出所有服务容器(包括已停止的)
docker compose ps -a
# 只显示特定服务的容器状态
docker compose ps web
# 使用指定的Compose文件查看容器状态
docker compose -f docker-compose.prod.yml ps
总结
本文档介绍了Docker的常用命令,包括镜像管理、容器管理、网络管理、数据卷管理以及Docker Compose命令。通过这些命令,您可以有效地管理Docker环境中的各种资源。
建议在实际使用中,结合 --help参数查看命令的完整用法,例如:
docker run --help
这将显示该命令的所有可用参数和详细说明。