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

一、镜像相关命令

在这里插入图片描述

  1. 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         # 静默模式,减少输出
  1. 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            # 自定义输出格式
  1. 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          # 不删除未标记的父镜像
  1. 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           # 设置构建时的网络模式
  1. docker tag - 给镜像打标签
# 语法
docker tag 源镜像[:标签] 目标镜像[:标签]
 
# 示例
docker tag ubuntu:22.04 myubuntu:v1
docker tag myapp:1.0 myregistry/myapp:1.0   # 准备推送到私有仓库
  1. docker push - 推送镜像到仓库
# 语法
docker push [选项] 镜像名[:标签]
 
# 示例
docker push myusername/myapp:1.0
docker push localhost:5000/myapp  # 推送到私有仓库
  1. docker save - 导出镜像为tar文件
# 语法
docker save [选项] 镜像名 -o 文件.tar
 
# 示例
docker save -o ubuntu.tar ubuntu:22.04
docker save nginx:latest alpine:latest -o multiple.tar
  1. docker load - 从tar文件导入镜像
# 语法
docker load [选项]
 
# 示例
docker load -i ubuntu.tar
docker load < ubuntu.tar
  1. docker history - 查看镜像构建历史
# 语法
docker history [选项] 镜像名
 
# 示例
docker history ubuntu:22.04
docker history --no-trunc nginx  # 显示完整命令
  1. docker inspect - 查看镜像/容器详细信息
# 语法
docker inspect [选项] 名称/ID
 
# 示例
docker inspect ubuntu:22.04      # 查看镜像信息
docker inspect --format='{{.Os}}' ubuntu  # 使用Go模板过滤

二、容器相关命令

在这里插入图片描述

  1. 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 
  1. 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个容器
  1. 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)   # 停止所有容器
  1. docker pause / unpause - 暂停/恢复容器
# 暂停容器(冻结进程)
docker pause 容器ID/名称
 
# 恢复容器
docker unpause 容器ID/名称
 
# 示例
docker pause mynginx
docker unpause mynginx
  1. 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          # 删除容器间的链接
  1. 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       # 指定工作目录
  1. 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    # 显示时间戳
  1. 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/
  1. 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)
  1. docker top - 查看容器内进程
# 语法
docker top 容器ID/名称 [ps选项]
 
# 示例
docker top mynginx
docker top mynginx aux   # 使用ps选项
  1. docker stats - 查看容器资源使用
# 语法
docker stats [选项] [容器...]
 
# 示例
docker stats                    # 查看所有容器统计信息
docker stats mynginx            # 查看指定容器
docker stats --no-stream        # 只显示一次(不持续刷新)
docker stats --format "table {{.Name}}\t{{.CPUPerc}}\t{{.MemUsage}}"
  1. docker attach - 附加到运行中的容器
# 语法
docker attach [选项] 容器ID/名称
 
# 示例
docker attach mynginx
 
# 注意:通常推荐使用 docker exec -it 而不是 attach
  1. docker rename - 重命名容器
# 语法
docker rename 旧名称 新名称
 
# 示例
docker rename mynginx web-server
  1. docker wait - 等待容器停止
# 语法
docker wait 容器ID/名称
 
# 示例
docker wait mynginx   # 阻塞直到容器停止
  1. docker port - 查看容器端口映射
# 语法
docker port 容器ID/名称 [私有端口]
 
# 示例
docker port mynginx
docker port mynginx 80   # 查看80端口映射

三、网络相关命令

  1. docker network ls - 列出网络
# 语法
docker network ls [选项]
 
# 示例
docker network ls
docker network ls --filter driver=bridge
  1. 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        # 允许容器动态附加
  1. docker network connect - 连接容器到网络
# 语法
docker network connect [选项] 网络名 容器名
 
# 示例
docker network connect mynet mynginx
docker network connect --ip 172.20.0.10 mynet mynginx
  1. docker network disconnect - 断开容器网络
# 语法
docker network disconnect [选项] 网络名 容器名
 
# 示例
docker network disconnect mynet mynginx
docker network disconnect --force mynet mynginx
  1. docker network inspect - 查看网络详情
# 语法
docker network inspect [选项] 网络名
 
# 示例
docker network inspect bridge
docker network inspect --format='{{range .Containers}}{{.Name}}{{end}}' mynet
  1. docker network rm - 删除网络
# 语法
docker network rm 网络名
 
# 示例
docker network rm mynet

四、数据卷相关命令

**数据卷(volume)**是一个虚拟目录,指向宿主机文件系统中的某个目录。可供容器使用的特殊目录,可以在容器之间共享和重用。对数据卷的修改会立即生效,对数据卷的更新不会影响镜像。卷会一直存在,直到没有容器使用。
一旦完成数据卷挂载,对容器的一切操作都会作用在数据卷对应的宿主机目录了。这样,我们操作宿主机的/var/lib/docker/volumes/html目录,就等于操作容器内的/usr/share/nginx/html目录了。
两个文件挂载同一个数据卷,数据共享;升级 容器删了,但数据卷没删、硬盘目录还在。
在这里插入图片描述

  1. docker volume ls - 列出数据卷
# 语法
docker volume ls [选项]
 
# 示例
docker volume ls
docker volume ls --filter dangling=true
  1. docker volume create - 创建数据卷
# 语法
docker volume create [选项] [卷名]
 
# 示例
docker volume create myvol
docker volume create --driver local --opt type=nfs my-nfs-volume
  1. docker volume inspect - 查看卷详情
# 语法
docker volume inspect [选项] 卷名
 
# 示例
docker volume inspect myvol
  1. docker volume rm - 删除数据卷
# 语法
docker volume rm [选项] 卷名
 
# 示例
docker volume rm myvol
docker volume rm $(docker volume ls -q)  # 删除所有未使用的卷
  1. docker volume prune - 清理未使用的卷
# 语法
docker volume prune [选项]
 
# 示例
docker volume prune
docker volume prune -f    # 强制删除,不提示确认

五、系统管理命令

  1. docker info - 显示系统信息
# 语法
docker info [选项]
 
# 示例
docker info   # 显示Docker系统信息,包括容器数、镜像数、驱动等
  1. docker version - 显示版本信息
# 语法
docker version [选项]
 
# 示例
docker version      # 显示客户端和服务端版本
docker version --format '{{.Server.Version}}'
  1. docker system df - 查看磁盘使用
# 语法
docker system df [选项]
 
# 示例
docker system df          # 显示镜像、容器、卷的磁盘占用
docker system df -v       # 显示详细信息
  1. 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           # 删除未使用的卷
  1. docker events - 实时监控Docker事件
# 语法
docker events [选项]
 
# 示例
docker events                 # 监控所有事件
docker events --filter event=start  # 只监控启动事件
docker events --since 1h      # 查看1小时内的事件
  1. docker system events - 同docker events
# 同上,system events 是 events 的别名
docker system events

六、仓库相关命令

  1. 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
  1. 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 命令(扩展)

  1. 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
  1. docker compose down - 停止并删除
# 示例
docker compose down         # 停止并删除容器、网络
docker compose down -v      # 同时删除卷
docker compose down --rmi all  # 同时删除镜像
  1. docker compose ps - 查看状态
# 示例
docker compose ps
docker compose ps -a
  1. docker compose logs - 查看日志
# 示例
docker compose logs
docker compose logs -f service_name
  1. docker compose exec - 执行命令
# 示例
docker compose exec web bash
docker compose exec web ls -la
  1. 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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值