Docker 命令详解


docker images — 查看本地镜像

命令

docker images

说明

列出本地已下载的所有镜像及其标签、ID、大小等信息。

适用场景

查看本地镜像资源、准备删除或管理镜像时。

常见用法

  • docker images -a 显示所有(包括中间层)镜像
  • docker images | grep nginx 只看nginx相关镜像

常见错误

实战案例

docker images

docker pull — 拉取镜像

命令

docker pull 镜像名:标签
# 例:docker pull nginx:latest

说明

从远程仓库拉取镜像到本地。

适用场景

首次部署、镜像更新、拉取指定版本。

常见用法

  • 拉取指定版本:docker pull redis:6.2
  • 只写镜像名默认拉取latest

常见错误

  • 网络不通:pull access denied
  • 镜像不存在:manifest not found

实战案例

docker pull nginx:latest
docker pull redis:6.2

docker build — 构建镜像

命令

docker build -t 镜像名:标签 .

说明

根据 Dockerfile 构建自定义镜像。

适用场景

本地开发、定制环境、自动化CI/CD。

常见用法

  • docker build -t myapp:v1 . 构建当前目录镜像
  • docker build -f path/Dockerfile . 指定Dockerfile路径

常见错误

  • Dockerfile语法错误
  • 构建上下文路径错误

实战案例

docker build -t mynginx:v1 .

docker rmi — 删除镜像

命令

docker rmi 镜像名/ID

说明

删除指定的镜像。

适用场景

清理无用镜像、释放磁盘空间。

常见用法

  • docker rmi nginx:latest 删除指定镜像
  • docker rmi $(docker images -q) 批量删除所有镜像

常见错误

  • 镜像被容器占用:Error response: conflict

实战案例

docker rmi nginx:latest

docker run — 运行容器

命令

docker run -d --name 容器名 -p 主机端口:容器端口 镜像名

说明

后台运行一个容器,并映射端口。

适用场景

首次部署服务、测试镜像、快速启动应用。

常见用法

  • docker run -it ubuntu bash 进入交互式终端
  • docker run -v /host:/container 挂载主机目录
  • docker run --rm 镜像名 运行后自动删除容器

常见错误

  • 端口已被占用:Error starting userland proxy: listen tcp
  • 镜像不存在:Unable to find image

实战案例

docker run -d --name mynginx -p 8080:80 nginx

docker exec — 进入容器

命令

docker exec -it 容器名/ID bash

说明

进入容器内部,进行交互式操作。

适用场景

调试、排查、手动操作容器内环境。

常见用法

  • docker exec -it mynginx bash 进入nginx容器
  • docker exec -u root 容器名 bash 以root身份进入

常见错误

  • 容器未运行:Error: No such container

实战案例

docker exec -it mynginx bash

docker logs — 查看日志

命令

docker logs -f 容器名/ID

说明

实时查看容器输出日志。

适用场景

排查服务异常、查看输出、调试。

常见用法

  • docker logs -f mynginx 实时跟踪日志
  • docker logs --tail 100 mynginx 查看最后100行

常见错误

  • 容器未运行:Error: No such container

实战案例

docker logs -f mynginx

docker system prune — 一键清理

命令

docker system prune -a

说明

一键清理无用的镜像、容器、网络等,释放空间。

适用场景

磁盘空间不足、定期维护。

常见用法

  • docker system prune 只清理未使用资源
  • docker system prune -a 包括所有未使用镜像

常见错误

实战案例

docker system prune -a

多阶段构建(Multi-stage Build)

命令/示例

FROM node:16 AS build
WORKDIR /app
COPY . .
RUN npm install && npm run build

FROM nginx:alpine
COPY --from=build /app/dist /usr/share/nginx/html

说明

多阶段构建可大幅减小最终镜像体积,提升安全性和效率。

适用场景

前端/后端项目构建、生产环境镜像优化。

常见用法

  • COPY --from=build ... 跨阶段拷贝

常见错误

  • 阶段命名拼写错误

实战案例

见上方示例


Docker Compose 基础命令

命令

docker-compose up -d
docker-compose down
docker-compose logs

说明

Compose 用于一键编排和管理多容器应用,适合开发和测试环境。

适用场景

本地开发、集成测试、微服务部署。

常见用法

  • docker-compose up 前台启动
  • docker-compose logs -f 跟踪日志

常见错误

  • yml文件格式错误

实战案例

version: '3'
services:
  web:
    image: nginx
    ports:
      - "8080:80"

自定义网络

命令

docker network create mynet
docker run --network=mynet --name app1 busybox
docker run --network=mynet --name app2 busybox

说明

自定义网络让容器间可以通过名称互相访问,适合微服务架构。

适用场景

多容器通信、微服务部署。

常见用法

  • docker network ls 查看所有网络

常见错误

  • 网络名冲突

实战案例

见上方命令


数据卷类型

命令

# 匿名卷
docker run -v /data busybox

# 具名卷
docker volume create mydata
docker run -v mydata:/data busybox

# 绑定挂载
docker run -v /host/path:/container/path busybox

说明

数据卷用于持久化和共享数据,推荐使用具名卷管理。

适用场景

数据持久化、主机与容器数据共享。

常见用法

  • docker volume ls 查看所有卷

常见错误

  • 路径权限不足

实战案例

见上方命令


健康检查

命令/示例

HEALTHCHECK --interval=30s --timeout=10s \
  CMD curl -f http://localhost/ || exit 1

说明

为容器添加健康检查,便于自动化运维和故障自愈。

适用场景

生产环境服务监控。

常见用法

  • HEALTHCHECK NONE 关闭健康检查

常见错误

  • 检查命令返回值错误

实战案例

见上方示例


容器资源限制

命令

docker run --memory=512m --cpus=1 nginx

说明

限制容器最大内存和CPU,防止资源被单个容器占满。

适用场景

多容器部署、资源有限场景。

常见用法

  • --memory=1g 限制内存
  • --cpus=2 限制CPU核数

常见错误

  • 参数拼写错误

实战案例

docker run --memory=256m --cpus=0.5 nginx

自动重启策略

命令

docker run --restart=always nginx
docker run --restart=on-failure:3 nginx

说明

设置容器异常退出后的自动重启策略,提升服务可用性。

适用场景

生产环境、关键服务容器。

常见用法

  • --restart=unless-stopped 仅非手动停止时重启

常见错误

  • 策略拼写错误

实战案例

见上方命令


镜像构建缓存优化

技巧

  • 将不常变动的指令(如依赖安装)放在 Dockerfile 前面,减少重建时的缓存失效。
  • 合理拆分 RUN 指令,减少镜像层数。

说明

合理利用缓存可加快构建速度,减少资源消耗。

适用场景

频繁构建、CI/CD流水线。

常见用法

  • 多阶段构建配合缓存

常见错误

  • 缓存未命中导致构建变慢

实战案例

见上方技巧


多平台构建

命令

docker buildx build --platform linux/amd64,linux/arm64 -t myimage:latest .

说明

支持同时构建多种架构的镜像,适合跨平台部署。

适用场景

需要同时支持x86和ARM架构的项目。

常见用法

  • --platform 指定目标平台

常见错误

  • 构建器未初始化

实战案例

见上方命令

相关文章

你还在为 Spring Boot3 读取 Nginx 的 Access.log 日志发愁?

你有没有过这样的经历?在互联网大厂后端开发的工作中,想要利用 Spring Boot3 读取 Nginx 的 Access.log 日志,进行深入分析,却总是困难重重。明明知道这些日志里藏着用户行为、...

你是不是也遇到过:Spring Boot3 读 Nginx 日志文件时无从下手?

在互联网大厂后端开发领域,对 Nginx 的 Access.log 日志进行深度分析是保障系统稳定运行、优化服务性能的关键环节。作为后端开发人员,我们期望从这些日志中挖掘用户访问行为、接口调用情况等有...

Nginx access_log 运行日志查询和配置

1. 介绍当我们学会Nginx的基本配置之后,可以通过Nginx配置Service代理。管理服务器所有的http和https请求。那么接下来就需要了解Nginx的日志控制,以及相关的文档查看了。你通过...

fluent-bit 收集nginx日志

简介Fluent Bit 是一款快、轻且高度可扩展的日志和指标采集器。与logstash对比更省资源。nginx日志可以让我们分析出很多信息,多个应用采集到elasticsearch之后,可以让查询统...

Nginx负载均衡:nginx.conf配置文件说明!

大家好,欢迎来到程序视点!我是你们的老朋友.小二!在此记录下Nginx服务器nginx.conf负载均衡的配置文件说明, 部分注释收集与网络.关于nginx.conf基本的配置,请查看上一篇文章!Ng...

nginx打印请求头日志方法-openresty

一、前言之前想用nginx打印收到的请求的请求头,但是只找到打印请求体的,没有打印请求头的,感觉原版nginx不支持。建议如果想打印请求头,先换成openresty(本人安装的是openresty-1...