Docker查看本地镜像
Docker查看本地镜像
引言
用Docker跑服务前先确认本地有哪些镜像、大小多少、标签是什么,避免重复拉取或用错版本。docker images系列命令能列出镜像仓库名、标签、ID、大小和创建时间。
列出全部本地镜像
docker images
# 等价
docker image ls
输出REPOSITORY、TAG、IMAGE ID、CREATED、SIZE五列。
只看镜像ID
docker images -q
只输出短ID,配合批量删除使用。
按名称过滤
docker images nginx
docker images | grep php
列出指定仓库名或关键词的镜像。
查看镜像详细信息
docker inspect nginx:latest
JSON输出架构、环境变量、挂载点、默认启动命令等。
查看镜像历史层
docker history nginx:latest
看每层做了什么改动、每层大小,理解镜像分层结构。
过滤和格式化
docker images --format "{{.Repository}}:{{.Tag}} {{.Size}}"
自定义输出列,脚本里取数更方便。
注意事项
- 同一个镜像不同TAG可能共用层,SIZE不重复累加;
- 悬空镜像
是旧版本残留,用prune清理; - 镜像大小是解压后占用,下载压缩包更小;
- 看磁盘占用用docker system df;
- 未被任何容器引用的镜像可安全删除;
- 拉取前先docker images判断是否已存在。
总结
docker images列出本地镜像,-q取ID、按仓库名过滤、inspect看详情、history看分层、--format自定义输出。日常先列镜像确认版本和大小,再决定拉取或删除,配合system df掌握磁盘占用。
Docker多阶段镜像构建
Docker多阶段镜像构建
引言
直接打包项目代码、编译工具到镜像,镜像体积巨大,部署传输慢。Docker多阶段构建可以在第一阶段编译代码,第二阶段只复制编译后的成品,剔除编译器、源码,大幅度减小镜像大小。
原理
一个Dockerfile可以写多个FROM,每一个FROM代表一个阶段。阶段之间可以复制文件,最终镜像只保留最后一个阶段内容,前面阶段的编译环境不会打包进最终镜像。
示例Dockerfile(PHP项目)
#阶段1:构建
FROM php:8.2-cli AS builder
WORKDIR /app
COPY . .
RUN composer install --no-dev
#阶段2:运行环境
FROM php:8.2-cli-alpine
WORKDIR /app
COPY --from=builder /app .
CMD ["php","index.php"]
最终镜像只有php运行环境加业务代码,没有composer、源码缓存文件。
优势
- 镜像体积大幅缩小,传输更快;
- 减少攻击面,镜像内没有编译工具,安全性更高;
- 只维护单个Dockerfile,构建流程简单。
注意事项
- 多阶段命名便于阅读;
- 不要复制不需要的文件,
.dockerignore忽略日志、缓存; - 区分开发镜像与生产镜像,生产镜像精简。
总结
多阶段构建是容器化部署最佳实践,适合PHP、Go、前端打包等场景,生产环境镜像尽量使用多阶段构建,减小体积提升部署效率。
Docker 镜像加速配置
Docker 镜像加速配置
国内拉取 Docker 镜像很慢,配置镜像加速器很有必要。
1. 为什么要加速
Docker Hub 在国外,国内拉镜像经常超时,配置加速器能快很多。
2. 配置方法
Linux(CentOS/Ubuntu):
编辑配置文件:
mkdir -p /etc/docker
vi /etc/docker/daemon.json
写入内容:
{
"registry-mirrors": [
"https://docker.mirrors.ustc.edu.cn",
"https://hub-mirror.c.163.com"
]
}
重启生效:
systemctl daemon-reload
systemctl restart docker
3. 常用加速器
# 中科大
https://docker.mirrors.ustc.edu.cn
# 网易
https://hub-mirror.c.163.com
# 阿里(需要自己的地址)
https://xxxx.mirror.aliyuncs.com
4. 验证是否生效
docker info
看到 Registry Mirrors 下面有地址就说明成功了。
5. 常见问题
1)拉取还是很慢:
- 换个加速器试试
- 网络问题
2)配置不生效:
- 检查 json 格式对不对
- 重启 docker
3)企业内网:
- 可以自己搭建私有镜像仓库
- 或者用阿里云私有镜像服务
6. 常用镜像源
# 官方
docker pull nginx
docker pull mysql
docker pull redis
# 指定版本
docker pull nginx:1.25
docker pull mysql:8.0
总结
Docker 镜像加速核心:
- 配置 daemon.json
- 用国内加速器地址
- 重启 docker 生效
- docker info 验证
做运维开发,Docker 镜像加速是第一步。
Docker 常用命令汇总
Docker 常用命令汇总
Docker 现在是开发必备工具,整理一份常用命令清单,记不住随时翻。
1. 镜像管理
# 查看本地镜像
docker images
# 搜索镜像
docker search nginx
# 拉取镜像
docker pull nginx:latest
# 删除镜像
docker rmi nginx:latest
# 导出镜像
docker save -o nginx.tar nginx:latest
# 导入镜像
docker load -i nginx.tar
2. 容器管理
# 查看运行中的容器
docker ps
# 查看所有容器(包括停止的)
docker ps -a
# 启动容器
docker start nginx
# 停止容器
docker stop nginx
# 重启容器
docker restart nginx
# 删除容器
docker rm nginx
# 强制删除运行中的容器
docker rm -f nginx
3. 运行容器
# 后台运行 nginx
docker run -d --name mynginx -p 80:80 nginx
# 参数说明:
# -d:后台运行
# --name:容器名
# -p:端口映射(主机:容器)
# -v:目录挂载(主机:容器)
# 进入容器内部
docker exec -it mynginx bash
# 查看容器日志
docker logs mynginx
# 实时查看日志
docker logs -f mynginx
4. 查看容器信息
# 查看容器详细信息
docker inspect mynginx
# 查看容器占用资源
docker stats
# 查看容器端口映射
docker port mynginx
5. 数据卷
# 创建数据卷
docker volume create mydata
# 查看所有数据卷
docker volume ls
# 挂载数据卷运行容器
docker run -d -v mydata:/data nginx
# 删除数据卷
docker volume rm mydata
6. Docker Compose
# 启动服务
docker-compose up -d
# 停止服务
docker-compose down
# 查看服务状态
docker-compose ps
# 查看日志
docker-compose logs -f
docker-compose.yml 示例:
version: '3'
services:
nginx:
image: nginx
ports:
- "80:80"
volumes:
- ./html:/usr/share/nginx/html
7. 清理命令
# 删除所有停止的容器
docker container prune
# 删除所有无用镜像
docker image prune -a
# 删除所有无用数据卷
docker volume prune
# 一键清理所有无用资源
docker system prune -a
总结
Docker 常用命令就这几类:
- 镜像: pull / images / rmi
- 容器: run / ps / stop / rm / exec
- 日志: logs / stats
- Compose: up / down
日常开发把这些命令用熟就够了,不用背,多敲几次自然记住。