Docker 基础命令
docker 命令速查表
| 类别 | 命令 | 作用 |
|---|---|---|
| 镜像 | pull | 拉取镜像 |
| images | 列出镜像 | |
| rmi | 删除镜像 | |
| build | 构建镜像 | |
| push | 推送镜像 | |
| 容器 | run | 创建并运行容器 |
| ps | 列出容器 | |
| start/stop/restart | 控制容器 | |
| rm | 删除容器 | |
| exec | 进入容器执行命令 | |
| logs | 查看日志 | |
| cp | 复制文件 | |
| 网络 | network ls | 列出网络 |
| network create | 创建网络 | |
| 卷 | volume ls | 列出卷 |
| volume create | 创建卷 | |
| 系统 | info | 系统信息 |
| version | 版本号 | |
| system prune | 清理资源 |
# 启动
systemctl start docker
# 停止
systemctl stop docker
# 重启
systemctl restart docker
# 查看docker状态
systemctl status docker
# 设置开机自动启动
systemctl enable docker
# 取消开机自启动
systemctl disable docker
一、镜像相关命令

- docker pull - 拉取镜像
# 语法
docker pull [选项] 镜像名[:标签]
# 示例
docker pull ubuntu:22.04 # 拉取指定版本
docker pull nginx # 拉取最新版(latest)
docker pull alpine:3.18 # 拉取特定版本
# 常用选项
--all-tags, -a # 拉取仓库所有标签的镜像
--platform # 指定平台(linux/amd64, linux/arm64)
-q, --quiet # 静默模式,减少输出
- docker images / docker image ls - 列出本地镜像
# 语法
docker images [选项] [仓库名]
# 示例
docker images # 列出所有镜像
docker images nginx # 列出特定镜像
docker images -a # 列出所有(包括中间层)
docker images -q # 只显示镜像ID
# 常用选项
-a, --all # 显示所有镜像(包括中间层)
-q, --quiet # 只显示镜像ID
--digests # 显示摘要信息
--no-trunc # 不截断输出(显示完整ID)
--format # 自定义输出格式
- docker rmi - 删除镜像
# 语法
docker rmi [选项] 镜像名/ID
# 示例
docker rmi ubuntu:22.04 # 删除指定镜像(docker image rm 镜像名称/镜像ID)
docker rmi -f ubuntu:22.04 # 强制删除(即使有容器在使用)
docker rmi -f ubuntu:22.04 mysql:5.7 # 删除多个 其镜像ID或镜像用用空格隔开即可
docker rmi -f $(docker images -aq) # 删除全部镜像,-a 意思为显示全部, -q 意思为只显示ID
# 常用选项
-f, --force # 强制删除
--no-prune # 不删除未标记的父镜像
- docker build - 构建镜像
# 语法
docker build [选项] 构建上下文路径
# 示例
docker build -t myapp:1.0 . # 使用当前目录Dockerfile构建
docker build -t myapp:1.0 -f Dockerfile.dev . # 指定Dockerfile
docker build --no-cache -t myapp . # 不使用缓存
# 常用选项
-t, --tag # 指定镜像名称和标签
-f, --file # 指定Dockerfile路径
--no-cache # 不使用缓存
--build-arg # 传递构建参数
--pull # 总是尝试拉取最新基础镜像
--network # 设置构建时的网络模式
- docker tag - 给镜像打标签
# 语法
docker tag 源镜像[:标签] 目标镜像[:标签]
# 示例
docker tag ubuntu:22.04 myubuntu:v1
docker tag myapp:1.0 myregistry/myapp:1.0 # 准备推送到私有仓库
- docker push - 推送镜像到仓库
# 语法
docker push [选项] 镜像名[:标签]
# 示例
docker push myusername/myapp:1.0
docker push localhost:5000/myapp # 推送到私有仓库
- docker save - 导出镜像为tar文件
# 语法
docker save [选项] 镜像名 -o 文件.tar
# 示例
docker save -o ubuntu.tar ubuntu:22.04
docker save nginx:latest alpine:latest -o multiple.tar
- docker load - 从tar文件导入镜像
# 语法
docker load [选项]
# 示例
docker load -i ubuntu.tar
docker load < ubuntu.tar
- docker history - 查看镜像构建历史
# 语法
docker history [选项] 镜像名
# 示例
docker history ubuntu:22.04
docker history --no-trunc nginx # 显示完整命令
- docker inspect - 查看镜像/容器详细信息
# 语法
docker inspect [选项] 名称/ID
# 示例
docker inspect ubuntu:22.04 # 查看镜像信息
docker inspect --format='{{.Os}}' ubuntu # 使用Go模板过滤
二、容器相关命令

- docker run - 创建并运行容器
# 语法
docker run [选项] 镜像名 [命令] [参数]
# 常用选项详解
-d, --detach # 后台运行
-it # 交互式运行(-i + -t)
--name # 指定容器名称
-p, --publish # 端口映射 宿主机:容器(冒号左侧是宿主机端口,右侧是容器端口。宿主机端口可以任意,只要没有被占用,容器内端口取决于应用本身)
-P, --publish-all # 随机端口映射
-v, --volume # 挂载卷
--rm # 容器退出后自动删除
-e, --env # 设置环境变量
--env-file # 从文件读取环境变量
--network # 指定网络
--restart # 重启策略(always, on-failure)
--privileged # 特权模式
-w, --workdir # 指定工作目录
-u, --user # 指定用户
# 示例
docker run -d --name myNginxContainer -p 8080:80 nginx
docker run -it --rm ubuntu:22.04 /bin/bash
docker run -d -e MYSQL_ROOT_PASSWORD=123456 mysql
docker run --restart=always -d nginx
# 若容器运行时volume不存在,会自动被创建出来。把html数据卷挂载到容器内的/root/html这个目录中
docker run --name mn -v html:/root/html -p 8080:80 nginx
- docker ps - 列出容器
# 语法
docker ps [选项]
# 示例
docker ps # 列出运行中的容器
docker ps -a # 列出所有容器(包括停止的)
docker ps -q # 只显示容器ID
docker ps -s # 显示容器大小
docker ps --filter "status=exited" # 过滤状态
# 常用选项
-a, --all # 显示所有容器
-q, --quiet # 只显示容器ID
-s, --size # 显示容器大小
--filter, -f # 过滤输出
--format # 自定义输出格式
-l, --latest # 显示最近创建的容器
-n # 显示最近创建的n个容器
- docker start / stop / restart - 控制容器
# 启动已停止的容器
docker start [选项] 容器ID/名称
# 停止运行中的容器
docker stop [选项] 容器ID/名称
# 重启容器
docker restart [选项] 容器ID/名称
# 示例
docker start mynginx
docker stop mynginx
docker restart mynginx
docker stop $(docker ps -q) # 停止所有容器
- docker pause / unpause - 暂停/恢复容器
# 暂停容器(冻结进程)
docker pause 容器ID/名称
# 恢复容器
docker unpause 容器ID/名称
# 示例
docker pause mynginx
docker unpause mynginx
- docker rm - 删除容器
# 语法
docker rm [选项] 容器ID/名称
# 示例
docker rm mynginx # 删除停止的容器
docker rm -f mynginx # 强制删除运行中的容器
docker rm -f 容器名 容器名 容器名 #删除多个容器 空格隔开要删除的容器名或容器ID
docker rm $(docker ps -aq) # 删除所有容器
docker rm -v mynginx # 删除容器及其关联的卷
# 常用选项
-f, --force # 强制删除运行中的容器
-v, --volumes # 删除容器关联的卷
-l, --link # 删除容器间的链接
- docker exec - 在运行中的容器执行命令
# 语法
docker exec [选项] 容器ID/名称 命令 [参数]
# 示例
docker exec -it mynginx /bin/bash # 进入容器交互式shell
docker exec mynginx ls /etc/nginx # 执行单条命令
docker exec -e VAR=value mynginx env # 设置环境变量
# 常用选项
-d, --detach # 后台执行
-i, --interactive # 保持STDIN打开
-t, --tty # 分配伪终端
-e, --env # 设置环境变量
-w, --workdir # 指定工作目录
- docker logs - 查看容器日志
# 语法
docker logs [选项] 容器ID/名称
# 示例
docker logs mynginx # 查看日志
docker logs -f mynginx # 实时跟踪日志
docker logs --tail 100 mynginx # 查看最后100行
docker logs --since 2024-01-01 mynginx # 查看指定时间后的日志
docker logs --since="5m" mynginx # 查看从5分钟前到现在的日志
docker logs --since="2026-01-01T14:00:00" --until="2026-01-01T16:00:00" mynginx # 查看指定时间范围内的日志
# 常用选项
-f, --follow # 实时跟踪日志输出
--tail # 显示最后n行
--since # 显示指定时间后的日志
--until # 显示指定时间前的日志
-t, --timestamps # 显示时间戳
- docker cp - 复制文件
# 语法
docker cp [选项] 源路径 目标路径
# 从容器复制到宿主机
docker cp mynginx:/etc/nginx/nginx.conf ./nginx.conf
# 从宿主机复制到容器
docker cp ./app.conf mynginx:/etc/nginx/conf.d/
# 示例
docker cp mynginx:/var/log/nginx/access.log .
docker cp ./index.html mynginx:/usr/share/nginx/html/
- docker commit - 将容器保存为新镜像
# 语法
docker commit [选项] 容器ID/名称 新镜像名[:标签]
# 示例
docker commit mynginx mynginx-custom:v1
docker commit -m "added custom config" mynginx mynginx:v2
# 常用选项
-a, --author # 作者信息
-c, --change # 应用Dockerfile指令
-m, --message # 提交信息
-p, --pause # 提交时暂停容器(默认true)
- docker top - 查看容器内进程
# 语法
docker top 容器ID/名称 [ps选项]
# 示例
docker top mynginx
docker top mynginx aux # 使用ps选项
- docker stats - 查看容器资源使用
# 语法
docker stats [选项] [容器...]
# 示例
docker stats # 查看所有容器统计信息
docker stats mynginx # 查看指定容器
docker stats --no-stream # 只显示一次(不持续刷新)
docker stats --format "table {{.Name}}\t{{.CPUPerc}}\t{{.MemUsage}}"
- docker attach - 附加到运行中的容器
# 语法
docker attach [选项] 容器ID/名称
# 示例
docker attach mynginx
# 注意:通常推荐使用 docker exec -it 而不是 attach
- docker rename - 重命名容器
# 语法
docker rename 旧名称 新名称
# 示例
docker rename mynginx web-server
- docker wait - 等待容器停止
# 语法
docker wait 容器ID/名称
# 示例
docker wait mynginx # 阻塞直到容器停止
- docker port - 查看容器端口映射
# 语法
docker port 容器ID/名称 [私有端口]
# 示例
docker port mynginx
docker port mynginx 80 # 查看80端口映射
三、网络相关命令
- docker network ls - 列出网络
# 语法
docker network ls [选项]
# 示例
docker network ls
docker network ls --filter driver=bridge
- docker network create - 创建网络
# 语法
docker network create [选项] 网络名
# 示例
docker network create mynet
docker network create --driver bridge --subnet 172.20.0.0/16 mynet
docker network create --driver overlay --attachable my-overlay
# 常用选项
--driver, -d # 网络驱动(bridge, overlay, macvlan等)
--subnet # 子网
--gateway # 网关
--ip-range # IP范围
--attachable # 允许容器动态附加
- docker network connect - 连接容器到网络
# 语法
docker network connect [选项] 网络名 容器名
# 示例
docker network connect mynet mynginx
docker network connect --ip 172.20.0.10 mynet mynginx
- docker network disconnect - 断开容器网络
# 语法
docker network disconnect [选项] 网络名 容器名
# 示例
docker network disconnect mynet mynginx
docker network disconnect --force mynet mynginx
- docker network inspect - 查看网络详情
# 语法
docker network inspect [选项] 网络名
# 示例
docker network inspect bridge
docker network inspect --format='{{range .Containers}}{{.Name}}{{end}}' mynet
- docker network rm - 删除网络
# 语法
docker network rm 网络名
# 示例
docker network rm mynet
四、数据卷相关命令
**数据卷(volume)**是一个虚拟目录,指向宿主机文件系统中的某个目录。可供容器使用的特殊目录,可以在容器之间共享和重用。对数据卷的修改会立即生效,对数据卷的更新不会影响镜像。卷会一直存在,直到没有容器使用。
一旦完成数据卷挂载,对容器的一切操作都会作用在数据卷对应的宿主机目录了。这样,我们操作宿主机的/var/lib/docker/volumes/html目录,就等于操作容器内的/usr/share/nginx/html目录了。
两个文件挂载同一个数据卷,数据共享;升级 容器删了,但数据卷没删、硬盘目录还在。

- docker volume ls - 列出数据卷
# 语法
docker volume ls [选项]
# 示例
docker volume ls
docker volume ls --filter dangling=true
- docker volume create - 创建数据卷
# 语法
docker volume create [选项] [卷名]
# 示例
docker volume create myvol
docker volume create --driver local --opt type=nfs my-nfs-volume
- docker volume inspect - 查看卷详情
# 语法
docker volume inspect [选项] 卷名
# 示例
docker volume inspect myvol
- docker volume rm - 删除数据卷
# 语法
docker volume rm [选项] 卷名
# 示例
docker volume rm myvol
docker volume rm $(docker volume ls -q) # 删除所有未使用的卷
- docker volume prune - 清理未使用的卷
# 语法
docker volume prune [选项]
# 示例
docker volume prune
docker volume prune -f # 强制删除,不提示确认
五、系统管理命令
- docker info - 显示系统信息
# 语法
docker info [选项]
# 示例
docker info # 显示Docker系统信息,包括容器数、镜像数、驱动等
- docker version - 显示版本信息
# 语法
docker version [选项]
# 示例
docker version # 显示客户端和服务端版本
docker version --format '{{.Server.Version}}'
- docker system df - 查看磁盘使用
# 语法
docker system df [选项]
# 示例
docker system df # 显示镜像、容器、卷的磁盘占用
docker system df -v # 显示详细信息
- docker system prune - 清理未使用的资源
# 语法
docker system prune [选项]
# 示例
docker system prune # 清理停止的容器、未使用的网络、悬空镜像
docker system prune -a # 清理所有未使用的镜像(不只是悬空)
docker system prune -f # 强制删除,不提示
docker system prune --volumes # 包括卷
# 常用选项
-a, --all # 删除所有未使用的镜像
-f, --force # 不提示确认
--volumes # 删除未使用的卷
- docker events - 实时监控Docker事件
# 语法
docker events [选项]
# 示例
docker events # 监控所有事件
docker events --filter event=start # 只监控启动事件
docker events --since 1h # 查看1小时内的事件
- docker system events - 同docker events
# 同上,system events 是 events 的别名
docker system events
六、仓库相关命令
- docker login / logout - 登录/登出仓库
# 登录
docker login [选项] [服务器]
# 示例
docker login # 登录Docker Hub
docker login -u username -p password
docker login myregistry.com:5000 # 登录私有仓库
# 登出
docker logout [服务器]
# 示例
docker logout
docker logout myregistry.com:5000
- docker search - 搜索镜像
# 语法
docker search [选项] 搜索词
# 示例
docker search nginx
docker search --filter stars=100 nginx # 搜索收藏数>100的镜像
docker search --limit 10 nginx # 只显示10条
# 常用选项
--filter, -f # 过滤条件(stars, is-official等)
--limit # 限制结果数量
--no-trunc # 不截断描述
--format # 自定义输出格式
七、Docker Compose 命令(扩展)
- docker compose up - 启动服务
# 语法
# SERVICE 是要启动的服务的名称。如果不指定服务名称,则默认会启动 docker-compose.yml 文件中定义的所有服务
docker compose up [选项] [SERVICE...]
# 示例
docker compose up # 前台启动
docker compose up -d # 后台启动
docker compose up --build # 启动前重新构建
# -f 选项,允许指定要使用的 docker-compose.yml 文件。
docker-compose -f <文件路径> [其他选项] <子命令> [参数]
docker-compose -f docker-compose-dev.yml up
- docker compose down - 停止并删除
# 示例
docker compose down # 停止并删除容器、网络
docker compose down -v # 同时删除卷
docker compose down --rmi all # 同时删除镜像
- docker compose ps - 查看状态
# 示例
docker compose ps
docker compose ps -a
- docker compose logs - 查看日志
# 示例
docker compose logs
docker compose logs -f service_name
- docker compose exec - 执行命令
# 示例
docker compose exec web bash
docker compose exec web ls -la
- docker compose build - 构建镜像
# 示例
docker compose build
docker compose build --no-cache
八、常用组合命令
# 1. 删除所有停止的容器
docker container prune
# 2. 删除所有未使用的镜像、容器、网络(不包含卷)
docker system prune -a
# 3. 删除所有未使用的卷
docker volume prune
# 4. 停止所有容器
docker stop $(docker ps -q)
# 5. 删除所有容器(包括运行中的)
docker rm -f $(docker ps -aq)
# 6. 删除所有镜像
docker rmi -f $(docker images -q)
# 7. 删除所有悬空镜像(none:none)
docker image prune
# 8. 进入容器调试
docker exec -it 容器名 /bin/sh # 或 /bin/bash
# 9. 查看容器IP地址
docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' 容器名
# 10. 实时查看容器日志并显示时间戳
docker logs -f --timestamps 容器名
# 11. 设置容器开机自启动
#法一 创建容器、使用docker run命令时,添加参数--restart=always,表示该容器随docker服务启动而自动启动
docker run --name mysqlLatest -p 3307:3306 --restart=always -d mysql
#若容器已启动,希望设置开机自启动
docker update 容器名/容器ID --restart=always

1104

被折叠的 条评论
为什么被折叠?



