Docker 常用命令解析

一、镜像相关命令

bash 复制代码
docker search [OPTIONS] TERM

功能:搜索 Docker Hub 镜像。

常用选项:

  • --filter:过滤条件,如--filter stars=3表示只显示星标不少于3的镜像。
  • --limit:限制搜索结果数量。
  • --no-trunc:不截断输出。

示例:

bash 复制代码
# 搜索镜像
docker search ubuntu

# 只显示官方镜像
docker search --filter "is-official=true" ubuntu

# 显示至少3星的镜像
docker search --filter "stars=3" ubuntu

# 限制搜索结果数量
docker search --limit 10 ubuntu

1.2 docker pull

bash 复制代码
docker pull [OPTIONS] NAME[:TAG|@DIGEST]

功能:拉取镜像

常用选项:

  • -a:拉取所有标签的镜像。
  • --platform:指定平台,如linux/amd64。

示例:

bash 复制代码
# 拉取指定标签镜像
docker pull ubuntu:22.04

# 拉取最新标签
docker pull ubuntu:latest

# 拉取所有标签
docker pull -a ubuntu

# 拉取指定平台的镜像
docker pull --platform linux/amd64 ubuntu:22.04

# 显示详细信息
docker pull ubuntu:22.04 --verbose

1.3 docker images

bash 复制代码
docker images [OPTIONS] [REPOSITORY[:TAG]]

功能:列出本地镜像

常用选项:

  • -a:列出所有镜像(包括中间层镜像)。
  • --digests:显示摘要信息。
  • -q:只显示镜像ID。

示例:

bash 复制代码
# 列出所有镜像
docker images

# 按仓库名过滤
docker images ubuntu

# 只显示镜像ID
docker images -q

# 显示所有镜像(包括中间层)
docker images -a

# 格式化输出
docker images --format "table {{.ID}}\t{{.Repository}}\t{{.Tag}}\t{{.Size}}"

# 不截断输出
docker images --no-trunc

1.4 docker rmi

bash 复制代码
docker rmi [OPTIONS] IMAGE [IMAGE...]

功能:删除镜像。

常用选项:

  • -f:强制删除。

示例:

bash 复制代码
# 删除指定镜像
docker rmi ubuntu:22.04

# 强制删除镜像
docker rmi -f ubuntu:22.04

# 删除多个镜像
docker rmi ubuntu:22.04 nginx:latest

# 删除所有镜像
docker rmi $(docker images -q)

# 删除悬空镜像(无标签)
docker rmi $(docker images -f "dangling=true" -q)

1.5 docker build

bash 复制代码
docker build [OPTIONS] PATH | URL | -

功能:构建镜像。

常用选项:

  • -t:给镜像打标签,格式为name:tag。
  • -f:指定Dockerfile文件路径。
  • --build-arg:设置构建时的变量。
  • --no-cache:构建时不使用缓存。

示例:

bash 复制代码
# 构建镜像
docker build -t myapp:1.0 .

# 指定Dockerfile路径
docker build -f Dockerfile.prod -t myapp:prod .

# 使用构建参数
docker build --build-arg VERSION=2.0 -t myapp:2.0 .

# 不使用缓存
docker build --no-cache -t myapp:latest .

# 多阶段构建指定目标阶段
docker build --target builder -t myapp:builder .

# 设置构建上下文
docker build -t myapp:1.0 ./path/to/build/context

1.6 docker history

bash 复制代码
docker history [OPTIONS] IMAGE

功能:查看镜像构建历史。

常用选项:

  • --no-trunc:不截断输出。

示例:

bash 复制代码
# 查看镜像构建历史
docker history ubuntu:22.04

# 不截断输出
docker history ubuntu:22.04 --no-trunc

# 不显示大小
docker history ubuntu:22.04 --no-trunc --format "{{.CreatedBy}}"

# 显示完整信息
docker history ubuntu:22.04 --human=false

1.7 docker tag

bash 复制代码
docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]

功能:为镜像打标签。

示例:

bash 复制代码
# 为镜像添加新标签
docker tag ubuntu:22.04 myubuntu:v1

# 修改仓库名称
docker tag ubuntu:22.04 myregistry.com/ubuntu:prod

# 显示帮助
docker tag --help

1.8 docker save

bash 复制代码
docker save [OPTIONS] IMAGE [IMAGE...]

功能:将镜像保存为tar文件。

常用选项:

  • -o:输出到文件。

示例:

bash 复制代码
# 导出镜像到文件
docker save -o ubuntu.tar ubuntu:22.04
docker save ubuntu:22.04 > ubuntu.tar

# 导出多个镜像
docker save -o images.tar ubuntu:22.04 nginx:latest

1.9 docker load

bash 复制代码
docker load [OPTIONS]

功能:从tar文件导入镜像。

常用选项:

  • -i:从文件导入。
  • -q:静默导入。

示例:

bash 复制代码
# 导入镜像
docker load -i ubuntu.tar
docker load < ubuntu.tar

# 显示加载过程
docker load -i ubuntu.tar --quiet=false

1.10 docker image inspect

bash 复制代码
docker image inspect [OPTIONS] NAME|ID [NAME|ID...]

功能:查看镜像详细信息。

常用选项:

  • --format:格式化输出,如--format={{.Id}}'

示例:

bash 复制代码
# 查看镜像详细信息
docker image inspect ubuntu:22.04

# 格式化输出
docker image inspect ubuntu:22.04 --format='{{.Id}}'

# 查看镜像大小
docker image inspect ubuntu:22.04 --format='{{.Size}}'

# 查看镜像创建时间
docker image inspect ubuntu:22.04 --format='{{.Created}}'

# 查看镜像配置
docker image inspect ubuntu:22.04 --format='{{json .Config}}'

二、容器相关命令

2.1 docker run

bash 复制代码
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

功能:创建并运行容器。

常用选项:

  • -d:后台运行。
  • -it:交互式运行(分配伪终端)。
  • --name:指定容器名称。
  • --rm:容器退出时自动删除。
  • -p:端口映射,格式为主机端口:容器端口。
  • -v:挂载数据卷,格式为主机目录:容器目录。
  • -e:设置环境变量。
  • --network:指定网络。
  • --restart:重启策略,如--restart=always。

示例:

bash 复制代码
# 基本运行
docker run ubuntu:22.04 echo "Hello Docker"

# 后台运行
docker run -d --name mynginx nginx

# 交互式运行
docker run -it ubuntu:22.04 bash

# 运行后自动删除
docker run --rm ubuntu:22.04 date

# 端口映射
docker run -d -p 80:80 nginx
docker run -d -p 8080:80 nginx
docker run -d -p 0.0.0.0:80:80 nginx
docker run -d -p 80:80/tcp -p 80:80/udp nginx

# 数据卷挂载
docker run -v /host/path:/container/path ubuntu
docker run --mount type=bind,source=/host/path,target=/container/path ubuntu
docker run -v myvolume:/data ubuntu

# 环境变量
docker run -e MY_ENV=value ubuntu
docker run --env-file .env ubuntu

# 网络配置
docker run --network=bridge ubuntu
docker run --network=host ubuntu
docker run --network=none ubuntu

# 资源限制
docker run --memory="1g" --cpus="0.5" ubuntu
docker run --memory-swap="2g" ubuntu

# 重启策略
docker run --restart=always nginx
docker run --restart=on-failure:5 nginx
docker run --restart=unless-stopped nginx

# 用户和权限
docker run --user="1000:1000" ubuntu
docker run --cap-add=NET_ADMIN ubuntu
docker run --cap-drop=ALL ubuntu

# 其他选项
docker run --read-only ubuntu  # 只读文件系统
docker run --tmpfs /tmp ubuntu  # tmpfs挂载

2.2 docker create

bash 复制代码
docker create [OPTIONS] IMAGE [COMMAND] [ARG...]

功能:创建容器但不启动。

常用选项:

  • -d:后台运行。
  • -it:交互式运行(分配伪终端)。
  • --name:指定容器名称。
  • --rm:容器退出时自动删除。
  • -p:端口映射,格式为主机端口:容器端口。
  • -v:挂载数据卷,格式为主机目录:容器目录。
  • -e:设置环境变量。
  • --network:指定网络。
  • --restart:重启策略,如--restart=always。

示例:

bash 复制代码
# 创建容器
docker create --name mycontainer nginx

# 创建容器并配置
docker create \
  --name myapp \
  -p 80:80 \
  -v /data:/app/data \
  nginx:latest

# 查看创建的容器
docker ps -a

2.3 docker ps

bash 复制代码
docker ps [OPTIONS]

功能:列出容器。

常用选项:

  • -a:列出所有容器(默认只显示运行中的)。
  • -q:只显示容器ID。
  • --filter:过滤条件,如--filter "status=exited"。

示例:

bash 复制代码
# 列出运行中的容器
docker ps

# 列出所有容器(包括已停止的)
docker ps -a

# 只显示容器ID
docker ps -q

# 显示最近创建的容器
docker ps -l

# 显示n个最近创建的容器
docker ps -n 3

# 按特定条件过滤
docker ps --filter "name=my"
docker ps --filter "status=running"
docker ps --filter "status=exited"
docker ps --filter "ancestor=ubuntu"
docker ps --filter "label=version=1.0"
docker ps --filter "before=container_name"
docker ps --filter "since=container_name"

# 不截断输出
docker ps --no-trunc

# 格式化输出
docker ps --format "table {{.ID}}\t{{.Names}}\t{{.Status}}\t{{.Ports}}"
docker ps --format "{{.Names}}: {{.Command}}"

# 显示容器大小
docker ps -s

2.4 docker start / docker stop / docker restart

bash 复制代码
docker start [OPTIONS] CONTAINER [CONTAINER...]
docker stop [OPTIONS] CONTAINER [CONTAINER...]
docker restart [OPTIONS] CONTAINER [CONTAINER...]

功能:启动、停止、重启容器。

常用选项:

  • -t:设置停止或重启的超时时间(秒)。

示例:

bash 复制代码
# 启动容器
docker start mycontainer

# 启动容器并附加到终端
docker start -a mycontainer

# 启动容器并交互式运行
docker start -i mycontainer

# 启动多个容器
docker start container1 container2

# 停止容器
docker stop mycontainer

# 停止多个容器
docker stop container1 container2

# 强制停止(发送SIGKILL)
docker stop -t 0 mycontainer  # 立即停止
docker kill mycontainer       # 强制终止

# 设置停止超时时间(默认10秒)
docker stop -t 30 mycontainer

# 重启容器
docker restart mycontainer

# 重启多个容器
docker restart container1 container2

# 设置重启超时时间
docker restart -t 30 mycontainer

2.5 docker pause / docker unpause

bash 复制代码
docker pause CONTAINER [CONTAINER...]
docker unpause CONTAINER [CONTAINER...]

功能:暂停和恢复容器。

示例:

bash 复制代码
# 暂停容器
docker pause mycontainer

# 恢复容器
docker unpause mycontainer

# 查看容器状态
docker ps | grep mycontainer

2.6 docker rm

bash 复制代码
docker rm [OPTIONS] CONTAINER [CONTAINER...]

功能:删除一个或多个容器。

常用选项:

  • -f:强制删除(正在运行的容器)。
  • -v:同时删除容器关联的数据卷。

示例:

bash 复制代码
# 删除已停止的容器
docker rm mycontainer

# 强制删除运行中的容器
docker rm -f mycontainer

# 删除容器及其关联的数据卷
docker rm -v mycontainer

# 删除所有已停止的容器
docker rm $(docker ps -a -q)

# 删除指定状态的容器
docker rm $(docker ps -a -f status=exited -q)

2.7 docker rename

bash 复制代码
docker rename CONTAINER NEW_NAME

功能:重命名容器。

示例:

bash 复制代码
# 重命名容器
docker rename old_name new_name

2.8 docker update

bash 复制代码
docker update [OPTIONS] CONTAINER [CONTAINER...]

功能:更新容器配置。

常用选项:

  • --memory:内存限制。
  • --cpus:CPU数量。

示例:

bash 复制代码
# 更新内存限制
docker update --memory="512m" mycontainer

# 更新CPU限制
docker update --cpus="1.0" mycontainer

# 更新重启策略
docker update --restart=always mycontainer

# 更新多个配置
docker update \
  --memory="1g" \
  --memory-swap="2g" \
  --cpus="2.0" \
  mycontainer

2.9 docker exec

bash 复制代码
docker exec [OPTIONS] CONTAINER COMMAND [ARG...]

功能:在运行中的容器内执行命令。

常用选项:

  • -it:交互式执行。
  • -d:后台执行。

示例:

bash 复制代码
# 在容器内执行命令
docker exec mycontainer ls /

# 交互式执行(分配伪终端)
docker exec -it mycontainer bash

# 以后台模式执行
docker exec -d mycontainer touch /tmp/test.txt

# 以特定用户执行
docker exec -u root mycontainer whoami

# 设置工作目录
docker exec -w /app mycontainer pwd

# 设置环境变量
docker exec -e MY_VAR=value mycontainer env

# 保留标准输入打开
docker exec -i mycontainer cat > file.txt

# 分配伪终端
docker exec -t mycontainer top

2.10 docker logs

bash 复制代码
docker logs [OPTIONS] CONTAINER

功能:查看容器日志。

常用选项:

  • -f:实时跟踪日志。
  • --tail:显示最后多少行,如--tail 100。
  • -t:显示时间戳。

示例:

bash 复制代码
# 查看容器日志
docker logs mycontainer

# 实时查看日志
docker logs -f mycontainer

# 查看最后N行日志
docker logs --tail 100 mycontainer

# 查看特定时间后的日志
docker logs --since="2024-01-01" mycontainer
docker logs --since="10m" mycontainer  # 10分钟前
docker logs --since="1h" mycontainer   # 1小时前

# 查看时间戳
docker logs -t mycontainer

# 查看标准错误
docker logs mycontainer > stdout.log 2> stderr.log

# 查看容器内进程的日志
docker logs --details mycontainer

2.11 docker top

bash 复制代码
docker top CONTAINER [ps OPTIONS]

功能:查看容器内进程。

示例:

bash 复制代码
# 查看容器内进程
docker top mycontainer

# 显示完整命令行
docker top mycontainer -ef

# 自定义格式
docker top mycontainer -o pid,pcpu,pmem,comm

2.12 docker stats

bash 复制代码
docker stats [OPTIONS] [CONTAINER...]

功能:查看容器资源使用统计。

常用选项:

  • -s:显示所有容器(默认只显示运行中的)。
  • --no-stream:只显示当前状态,不持续输出。

示例:

bash 复制代码
# 查看所有容器资源使用
docker stats

# 查看指定容器
docker stats mycontainer1 mycontainer2

# 单次统计(不持续)
docker stats --no-stream

# 格式化输出
docker stats --format "table {{.Container}}\t{{.CPUPerc}}\t{{.MemUsage}}"

# 查看所有容器(包括已停止的)
docker stats -a

# 显示完整的容器ID
docker stats --no-trunc

2.13 docker inspect

bash 复制代码
docker inspect [OPTIONS] NAME|ID [NAME|ID...]

功能:查看容器或镜像的详细信息。

常用选项:

  • --format:格式化输出,如--format='{{.NetworkSettings.IPAddress}}'。

示例:

bash 复制代码
# 查看容器详细信息
docker inspect mycontainer

# 查看镜像详细信息
docker inspect ubuntu:22.04

# 查看特定信息
docker inspect --format='{{.NetworkSettings.IPAddress}}' mycontainer
docker inspect --format='{{.State.Status}}' mycontainer
docker inspect --format='{{.Config.Image}}' mycontainer

# 查看网络信息
docker inspect --format='{{json .NetworkSettings.Networks}}' mycontainer

# 查看挂载信息
docker inspect --format='{{json .Mounts}}' mycontainer

# 查看容器大小
docker inspect --format='{{.SizeRw}}' mycontainer
docker inspect --format='{{.SizeRootFs}}' mycontainer

# 查看环境变量
docker inspect --format='{{json .Config.Env}}' mycontainer

# 以JSON格式输出
docker inspect mycontainer | jq .[0]

2.14 docker cp

bash 复制代码
docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH|-
docker cp [OPTIONS] SRC_PATH|- CONTAINER:DEST_PATH

功能:在容器和主机间复制文件。

示例:

bash 复制代码
# 从容器复制到主机
# 从容器复制到主机
docker cp mycontainer:/etc/nginx/nginx.conf ./nginx.conf

# 从主机复制到容器
docker cp ./app.py mycontainer:/app/app.py

# 复制目录
docker cp mycontainer:/app/logs ./logs/

# 保留文件权限
docker cp -a mycontainer:/etc/passwd ./

# 从标准输入复制到容器
echo "Hello" | docker cp - mycontainer:/tmp/hello.txt

# 从容器复制到标准输出
docker cp mycontainer:/tmp/output.txt -

2.15 docker commit

bash 复制代码
docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]

功能:从容器创建新镜像。

常用选项:

  • -a:提交的镜像作者。
  • -c:使用 Dockerfile 指令来创建镜像。
  • -m:提交时的说明文字。
  • -p:提交镜像前暂停容器(默认为 true)。

示例:

bash 复制代码
# 创建新镜像
docker commit mycontainer myimage:v1

# 添加作者信息
docker commit --author="John Doe" mycontainer myimage:v1

# 添加提交信息
docker commit --message="Added nginx config" mycontainer myimage:v1

# 暂停容器后再提交
docker commit --pause=true mycontainer myimage:v1

三、网络相关命令

3.1 docker network ls

bash 复制代码
docker network ls [OPTIONS]

作用:列出所有网络。

常用选项:

  • -q:只显示网络ID。

示例:

bash 复制代码
docker network ls

3.2 docker network create

bash 复制代码
docker network create [OPTIONS] NETWORK

作用:创建网络。

常用选项:

  • -d:指定驱动(bridge、overlay等)。
  • --subnet:指定子网。
  • --gateway:指定网关。

示例:

bash 复制代码
# 创建网络
docker network create mynetwork
docker network create --driver bridge mybridge
docker network create --subnet=172.20.0.0/16 --gateway=172.20.0.1 mynetwork

3.3 docker network inspect

bash 复制代码
docker network inspect [OPTIONS] NETWORK [NETWORK...]

作用:查看网络的详细信息。

示例:

bash 复制代码
# 查看网络详情
docker network inspect mynetwork

3.4 docker network connect / docker network disconnect

bash 复制代码
docker network connect [OPTIONS] NETWORK CONTAINER
docker network disconnect [OPTIONS] NETWORK CONTAINER

作用:将容器连接到网络或从网络断开。

示例:

bash 复制代码
# 连接容器到网络
docker network connect mynetwork mycontainer

# 从网络断开容器
docker network disconnect mynetwork mycontainer

3.5 docker network rm

bash 复制代码
docker network rm NETWORK [NETWORK...]

作用:删除一个或多个网络。

示例:

bash 复制代码
# 删除网络
docker network rm mynetwork

四、数据卷相关命令

4.1 docker volume ls

bash 复制代码
docker volume ls [OPTIONS]

作用:列出数据卷。

常用选项:

  • -q:只显示数据卷名称。

示例:

bash 复制代码
docker volume ls

4.2 docker volume create

bash 复制代码
docker volume create [OPTIONS] [VOLUME]

作用:创建数据卷。

常用选项:

  • -d:指定驱动(默认为local)。

示例:

bash 复制代码
docker volume create myvolume

4.3 docker volume inspect

bash 复制代码
docker volume inspect [OPTIONS] VOLUME [VOLUME...]

作用:查看数据卷的详细信息。

示例:

bash 复制代码
docker volume inspect myvolume

4.4 docker volume rm

bash 复制代码
docker volume rm [OPTIONS] VOLUME [VOLUME...]

作用:删除一个或多个数据卷。

示例:

bash 复制代码
docker volume rm myvolume

4.5 docker volume prune

bash 复制代码
docker volume prune [OPTIONS]

作用:删除所有未使用的数据卷。

常用选项:

  • -f:强制删除,不提示。

示例:

bash 复制代码
docker volume prune

五、其他常用命令

5.1 docker info

bash 复制代码
docker info [OPTIONS]

功能:显示Docker系统信息,包括容器和镜像数量、存储驱动等。

示例:

bash 复制代码
docker info

# 显示指定信息
docker info --format '{{.ServerVersion}}'
docker info --format '{{.Containers}} containers running'

5.2 docker version

bash 复制代码
docker version [OPTIONS]

功能:显示 Docker 客户端和服务端版本信息

示例:

bash 复制代码
# 显示详细版本信息
docker version

# 只显示客户端版本
docker version --format '{{.Client.Version}}'

# 显示JSON格式
docker version --format '{{json .}}'

5.3 docker system

bash 复制代码
docker system prune [OPTIONS]

功能:管理系统资源

常用选项:

  • -a:清理所有未使用的镜像,不仅仅是悬空镜像。
  • --volumes:同时清理数据卷。

示例:

bash 复制代码
# 查看磁盘使用情况
docker system df

# 详细查看磁盘使用
docker system df -v

# 清理无用资源
docker system prune

# 清理所有未使用资源(包括镜像)
docker system prune -a

# 同时清理数据卷
docker system prune -a --volumes

# 查看帮助
docker system --help
相关推荐
qq_5470261792 小时前
Docker 详解
运维·docker·容器
先生沉默先2 小时前
Docker+Nginx+Node.js 全栈容器化部署
nginx·docker·node.js
qq_5470261792 小时前
Dockerfile 详解
docker
专家大圣3 小时前
摆脱局域网!Logseq 搭配cpolar公网访问让笔记管理更自由
linux·网络·docker·内网穿透·cpolar
小黑要上天3 小时前
8-docker run --rm选项说明
运维·docker·容器
小翰子_3 小时前
Docker 常用笔记(速查版)
笔记·docker·容器
2401_831501733 小时前
Devops之Docker安装和使用
运维·docker·devops
初学者_xuan3 小时前
26、K8S-Sidecar代理
云原生·容器·kubernetes
❥ღ Komo·3 小时前
K8S-EFK日志收集实战指南
云原生·容器·kubernetes