目录标题

Docker 命令使用说明

容器生命周期管理

docker run - 创建并启动容器

# 基本语法
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

# 常用选项
-d                    # 后台运行容器
-it                   # 交互式终端
--name <name>         # 指定容器名称
-p <host>:<container> # 端口映射
-v <host>:<container> # 目录挂载
-e <key>=<value>      # 设置环境变量
--rm                  # 容器停止后自动删除
--network <network>   # 指定网络
--restart <policy>    # 重启策略 (no/on-failure/always/unless-stopped)
--cpus <num>          # 限制CPU数量
--memory <size>       # 限制内存大小
-w <path>             # 工作目录

# 示例
docker run -d --name nginx -p 80:80 nginx
docker run -it --rm ubuntu bash
docker run -d -v /host/data:/container/data mysql
docker run -d --restart=always --name web nginx

docker start - 启动已停止的容器

# 基本语法
docker start [OPTIONS] CONTAINER [CONTAINER...]

# 常用选项
-a, --attach          # 附加到容器的标准输出
-i, --interactive     # 附加到容器的标准输入

# 示例
docker start nginx
docker start -ai my-container
docker start container1 container2 container3

docker stop - 停止运行中的容器

# 基本语法
docker stop [OPTIONS] CONTAINER [CONTAINER...]

# 常用选项
-t, --time <seconds>  # 等待多少秒后强制停止 (默认10秒)

# 示例
docker stop nginx
docker stop -t 30 my-container
docker stop $(docker ps -q)  # 停止所有运行中的容器

docker restart - 重启容器

# 基本语法
docker restart [OPTIONS] CONTAINER [CONTAINER...]

# 常用选项
-t, --time <seconds>  # 等待多少秒后强制停止

# 示例
docker restart nginx
docker restart -t 60 my-container

docker kill - 强制停止容器

# 基本语法
docker kill [OPTIONS] CONTAINER [CONTAINER...]

# 常用选项
-s, --signal <signal> # 发送指定信号 (默认SIGKILL)

# 示例
docker kill nginx
docker kill -s SIGTERM my-container

docker rm - 删除容器

# 基本语法
docker rm [OPTIONS] CONTAINER [CONTAINER...]

# 常用选项
-f, --force           # 强制删除运行中的容器
-v, --volumes         # 删除关联的匿名卷

# 示例
docker rm nginx
docker rm -f my-container
docker rm -v container-with-volumes
docker rm $(docker ps -aq)  # 删除所有已停止的容器

docker pause/unpause - 暂停/恢复容器

# 暂停容器中的所有进程
docker pause CONTAINER [CONTAINER...]

# 恢复容器中的所有进程
docker unpause CONTAINER [CONTAINER...]

# 示例
docker pause nginx
docker unpause nginx

容器操作

docker ps - 查看容器列表

# 基本语法
docker ps [OPTIONS]

# 常用选项
-a, --all             # 显示所有容器(包括已停止的)
-q, --quiet           # 只显示容器ID
-s, --size            # 显示容器大小
-f, --filter <filter> # 过滤输出
--format <template>   # 格式化输出
-n, --last <num>      # 显示最近创建的n个容器

# 示例
docker ps                          # 查看运行中的容器
docker ps -a                       # 查看所有容器
docker ps -q                       # 只显示容器ID
docker ps -a -f status=exited      # 查看已停止的容器
docker ps -a -f name=nginx         # 按名称过滤
docker ps --format "table {{.ID}}\t{{.Names}}\t{{.Status}}"
docker ps -n 5                     # 显示最近5个容器

docker exec - 在运行中的容器执行命令

# 基本语法
docker exec [OPTIONS] CONTAINER COMMAND [ARG...]

# 常用选项
-d, --detach          # 后台运行命令
-i, --interactive     # 保持标准输入打开
-t, --tty             # 分配伪终端
-e, --env <key>=<val> # 设置环境变量
-u, --user <user>     # 指定用户
-w, --workdir <path>  # 指定工作目录

# 示例
docker exec -it nginx bash
docker exec -it nginx sh
docker exec nginx ls /etc
docker exec -d nginx touch /tmp/test
docker exec -u root nginx whoami
docker exec -w /var/log nginx ls
docker exec nginx cat /etc/nginx/nginx.conf

docker logs - 查看容器日志

# 基本语法
docker logs [OPTIONS] CONTAINER

# 常用选项
-f, --follow          # 实时跟踪日志输出
-t, --timestamps      # 显示时间戳
--tail <num>          # 显示最后N行日志
--since <timestamp>   # 显示指定时间之后的日志
--until <timestamp>   # 显示指定时间之前的日志

# 示例
docker logs nginx
docker logs -f nginx                    # 实时查看日志
docker logs -f --tail 100 nginx         # 查看最后100行并跟踪
docker logs -t nginx                    # 显示时间戳
docker logs --since 2024-01-01 nginx    # 查看指定日期后的日志
docker logs --since 30m nginx           # 查看最近30分钟的日志
docker logs --tail 50 -f nginx          # 查看最后50行并持续跟踪

docker attach - 附加到运行中的容器

# 基本语法
docker attach [OPTIONS] CONTAINER

# 常用选项
--no-stdin            # 不附加标准输入
--sig-proxy           # 代理所有接收到的信号到进程(默认true)

# 示例
docker attach nginx
docker attach --no-stdin nginx

# 注意: Ctrl+C 会停止容器,使用 Ctrl+P Ctrl+Q 可以安全退出

容器信息查看

docker inspect - 查看容器/镜像详细信息

# 基本语法
docker inspect [OPTIONS] CONTAINER|IMAGE [CONTAINER|IMAGE...]

# 常用选项
-f, --format <template> # 使用Go模板格式化输出
-s, --size              # 显示总文件大小(仅容器)
--type <type>           # 指定类型 (container|image)

# 示例
docker inspect nginx
docker inspect -s nginx
docker inspect --format '{{.State.Status}}' nginx
docker inspect --format '{{.NetworkSettings.IPAddress}}' nginx
docker inspect --format '{{json .Config}}' nginx | jq
docker inspect --format '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' nginx
docker inspect --format '{{.HostConfig.Memory}}' nginx

docker top - 查看容器中运行的进程

# 基本语法
docker top CONTAINER [ps OPTIONS]

# 示例
docker top nginx
docker top nginx aux
docker top nginx -eo pid,comm

docker stats - 查看容器资源使用统计

# 基本语法
docker stats [OPTIONS] [CONTAINER...]

# 常用选项
-a, --all             # 显示所有容器(默认只显示运行中的)
--no-stream           # 只显示一次,不持续刷新
--no-trunc            # 不截断输出
--format <template>   # 格式化输出

# 示例
docker stats
docker stats nginx
docker stats --no-stream
docker stats -a
docker stats --format "table {{.Container}}\t{{.CPUPerc}}\t{{.MemUsage}}"

docker port - 查看容器端口映射

# 基本语法
docker port CONTAINER [PRIVATE_PORT[/PROTO]]

# 示例
docker port nginx
docker port nginx 80
docker port nginx 80/tcp

docker diff - 查看容器文件系统变化

# 基本语法
docker diff CONTAINER

# 输出说明
# A - 文件或目录被添加
# D - 文件或目录被删除
# C - 文件或目录被修改

# 示例
docker diff nginx

容器与主机间的数据操作

docker cp - 容器与主机间复制文件

# 基本语法
docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH     # 从容器复制到主机
docker cp [OPTIONS] SRC_PATH CONTAINER:DEST_PATH     # 从主机复制到容器

# 常用选项
-a, --archive         # 归档模式(复制所有uid/gid信息)
-L, --follow-link     # 跟随符号链接

# 示例
docker cp nginx:/etc/nginx/nginx.conf ./nginx.conf
docker cp ./config.json nginx:/app/config.json
docker cp nginx:/var/log/ ./logs/
docker cp -a ./data/ nginx:/app/data/

docker export - 导出容器文件系统

# 基本语法
docker export [OPTIONS] CONTAINER

# 常用选项
-o, --output <file>   # 写入到文件而不是标准输出

# 示例
docker export nginx > nginx.tar
docker export -o nginx.tar nginx

docker import - 从归档文件创建镜像

# 基本语法
docker import [OPTIONS] file|URL|- [REPOSITORY[:TAG]]

# 常用选项
-c, --change <list>   # 应用Dockerfile指令
-m, --message <msg>   # 设置提交信息

# 示例
docker import nginx.tar my-nginx:latest
cat nginx.tar | docker import - my-nginx:latest
docker import -m "Imported from backup" nginx.tar my-nginx:v1

镜像相关命令

docker history - 查看镜像历史

# 基本语法
docker history [OPTIONS] IMAGE

# 常用选项
-H, --human           # 以人类可读格式显示大小(默认true)
--no-trunc            # 不截断输出
-q, --quiet           # 只显示镜像ID
--format <template>   # 格式化输出

# 示例
docker history nginx
docker history --no-trunc nginx
docker history -q nginx
docker history --format "table {{.ID}}\t{{.CreatedBy}}\t{{.Size}}" nginx

docker images - 查看镜像列表

# 基本语法
docker images [OPTIONS] [REPOSITORY[:TAG]]

# 常用选项
-a, --all             # 显示所有镜像(包括中间层)
-q, --quiet           # 只显示镜像ID
-f, --filter <filter> # 过滤输出
--format <template>   # 格式化输出
--digests             # 显示摘要信息
--no-trunc            # 不截断输出

# 示例
docker images
docker images -a
docker images -q
docker images -f dangling=true       # 显示悬空镜像
docker images -f reference='nginx:*' # 过滤nginx镜像
docker images --format "table {{.Repository}}\t{{.Tag}}\t{{.Size}}"

docker pull - 拉取镜像

# 基本语法
docker pull [OPTIONS] NAME[:TAG|@DIGEST]

# 常用选项
-a, --all-tags        # 拉取所有标签的镜像
-q, --quiet           # 静默模式
--platform <platform> # 指定平台

# 示例
docker pull nginx
docker pull nginx:1.21
docker pull nginx:latest
docker pull -a nginx
docker pull --platform linux/amd64 nginx

docker push - 推送镜像

# 基本语法
docker push [OPTIONS] NAME[:TAG]

# 常用选项
-a, --all-tags        # 推送所有标签
-q, --quiet           # 静默模式

# 示例
docker push myregistry/nginx:latest
docker push -a myregistry/nginx

docker rmi - 删除镜像

# 基本语法
docker rmi [OPTIONS] IMAGE [IMAGE...]

# 常用选项
-f, --force           # 强制删除
--no-prune            # 不删除未标记的父镜像

# 示例
docker rmi nginx
docker rmi -f nginx
docker rmi $(docker images -q)           # 删除所有镜像
docker rmi $(docker images -f dangling=true -q)  # 删除悬空镜像

docker tag - 给镜像打标签

# 基本语法
docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]

# 示例
docker tag nginx:latest myregistry/nginx:v1
docker tag abc123 mynginx:latest

docker save - 保存镜像到tar文件

# 基本语法
docker save [OPTIONS] IMAGE [IMAGE...]

# 常用选项
-o, --output <file>   # 写入到文件

# 示例
docker save nginx > nginx.tar
docker save -o nginx.tar nginx
docker save -o images.tar nginx:latest mysql:8.0

docker load - 从tar文件加载镜像

# 基本语法
docker load [OPTIONS]

# 常用选项
-i, --input <file>    # 从文件读取
-q, --quiet           # 静默模式

# 示例
docker load < nginx.tar
docker load -i nginx.tar

docker commit - 从容器创建新镜像

# 基本语法
docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]

# 常用选项
-a, --author <author> # 作者信息
-m, --message <msg>   # 提交信息
-c, --change <list>   # 应用Dockerfile指令
-p, --pause           # 提交时暂停容器(默认true)

# 示例
docker commit nginx my-nginx:v1
docker commit -m "Added config" -a "Author" nginx my-nginx:v2
docker commit -c "ENV DEBUG=true" nginx my-nginx:debug

docker build - 从Dockerfile构建镜像

# 基本语法
docker build [OPTIONS] PATH | URL | -

# 常用选项
-t, --tag <name:tag>  # 指定镜像名称和标签
-f, --file <file>     # 指定Dockerfile路径
--build-arg <key=val> # 设置构建参数
--no-cache            # 不使用缓存
--pull                # 总是尝试拉取新版本基础镜像
--target <stage>      # 构建多阶段的指定阶段
--platform <platform> # 指定平台

# 示例
docker build -t mynginx:v1 .
docker build -t mynginx:v1 -f Dockerfile.prod .
docker build --build-arg VERSION=1.0 -t myapp:1.0 .
docker build --no-cache -t myapp:latest .
docker build --target production -t myapp:prod .

网络相关命令

docker network ls - 查看网络列表

docker network ls
docker network ls -q
docker network ls -f driver=bridge

docker network inspect - 查看网络详情

docker network inspect bridge
docker network inspect --format '{{json .IPAM.Config}}' bridge

docker network create - 创建网络

docker network create mynetwork
docker network create --driver bridge --subnet 172.20.0.0/16 mynetwork

docker network connect/disconnect - 连接/断开容器网络

docker network connect mynetwork nginx
docker network disconnect mynetwork nginx

docker network rm - 删除网络

docker network rm mynetwork
docker network prune  # 删除未使用的网络

数据卷相关命令

docker volume ls - 查看卷列表

docker volume ls
docker volume ls -q
docker volume ls -f dangling=true

docker volume inspect - 查看卷详情

docker volume inspect myvolume
docker volume inspect --format '{{.Mountpoint}}' myvolume

docker volume create - 创建卷

docker volume create myvolume
docker volume create --driver local myvolume

docker volume rm - 删除卷

docker volume rm myvolume
docker volume prune  # 删除未使用的卷

系统相关命令

docker info - 查看Docker系统信息

docker info
docker info --format '{{.ServerVersion}}'

docker version - 查看Docker版本

docker version
docker version --format '{{.Server.Version}}'

docker system df - 查看Docker磁盘使用情况

docker system df
docker system df -v  # 详细信息

docker system prune - 清理未使用的资源

docker system prune           # 清理悬空资源
docker system prune -a        # 清理所有未使用的资源
docker system prune --volumes # 同时清理卷
docker system prune -f        # 不提示确认

docker events - 实时查看Docker事件

docker events
docker events --since 30m
docker events --filter event=start
docker events --filter type=container

常用组合命令示例

# 停止并删除所有容器
docker stop $(docker ps -aq) && docker rm $(docker ps -aq)

# 删除所有悬空镜像
docker rmi $(docker images -f dangling=true -q)

# 查看容器IP地址
docker inspect --format '{{.NetworkSettings.IPAddress}}' nginx

# 查看容器端口映射
docker inspect --format '{{range $p, $conf := .NetworkSettings.Ports}} {{$p}} -> {{(index $conf 0).HostPort}} {{end}}' nginx

# 进入容器并执行多条命令
docker exec -it nginx sh -c "cd /etc/nginx && cat nginx.conf"

# 批量删除退出状态的容器
docker rm $(docker ps -a -f status=exited -q)

# 查看容器占用的磁盘空间
docker ps -as

# 实时监控所有容器资源使用
docker stats --all --format "table {{.Name}}\t{{.CPUPerc}}\t{{.MemUsage}}"

命令速查表

命令 说明 常用参数
docker run 创建并启动容器 -d -it --name -p -v -e --rm
docker start 启动容器 -ai
docker stop 停止容器 -t
docker restart 重启容器 -t
docker rm 删除容器 -f -v
docker ps 查看容器 -a -q -s -f
docker exec 执行命令 -it -d -u -w
docker logs 查看日志 -f -t --tail --since
docker inspect 查看详情 -f -s
docker stats 查看统计 -a --no-stream
docker cp 复制文件 -a
docker history 查看镜像历史 --no-trunc -q
docker images 查看镜像 -a -q -f
docker pull 拉取镜像 -a
docker rmi 删除镜像 -f
docker build 构建镜像 -t -f --build-arg --no-cache
Logo

助力广东及东莞地区开发者,代码托管、在线学习与竞赛、技术交流与分享、资源共享、职业发展,成为松山湖开发者首选的工作与学习平台

更多推荐