Docker 镜像的分层与构建
403 字
2 分钟
Docker 镜像的分层与构建
🧱 镜像(Image)
- 是一个 只读模板,包含了运行应用所需的一切:操作系统、程序代码、依赖、配置等。
- 它就像一份快照,可以重复使用。
- 构建一次,可以启动很多个容器。
Docker 镜像是由多层构成的,每一层通常是只读的。这些层通过 UnionFS (联合文件系统) 组合在一起形成一个完整的文件系统,最终在容器运行时添加一个最上面的 可写层(writeable layer)。
如果你改变了 Dockerfile 中的一层指令(如 RUN、COPY、ADD),那么它之后的所有层都会重新构建。这是 Docker 的构建缓存(build cache)机制所决定的。
如果多个命令都指向同一个目的,那么应该用一个run来进行,而不是叠加多层
用一个RUN:
FROM debian:jessieRUN buildDeps='gcc libc6-dev make' \&& apt-get update \&& apt-get install -y $buildDeps \&& wget -O redis.tar.gz "http://download.redis.io/releases/redis-3.2.5.tar.gz" \&& mkdir -p /usr/src/redis \&& tar -xzf redis.tar.gz -C /usr/src/redis --strip-components=1 \&& make -C /usr/src/redis \&& make -C /usr/src/redis install \&& rm -rf /var/lib/apt/lists/* \&& rm redis.tar.gz \&& rm -r /usr/src/redis \&& apt-get purge -y --auto-remove $buildDepsdocker build 各种用法
从dockerfile
sudo docker build -f microservice.Dockerfile -t docker-jar .sudo docker build -t minecraft-modpack-server .从标准输入
cat Dockerfile | docker build -从Git repo
docker build https://github.com/twang2218/gitlab-ce-zh.git#:8.14Docker 指令
删除镜像
# 删除单个镜像(可以用镜像名:tag 或镜像 ID)docker rmi nginx:latest
# 强制删除(即使有基于它的容器存在)docker rmi -f <image-id>
# 清理所有悬空镜像(dangling,即没有 tag 引用的中间层)docker image prune
# 清理所有未被任何容器使用的镜像docker image prune -a文章分享
如果这篇文章对你有帮助,欢迎分享给更多人!
相关文章智能推荐
1
Docker 镜像构建上下文
云原生与运维docker build 末尾那个点是什么:构建上下文的作用、传输机制与控制范围。
2
DDD 领域驱动设计入门
后端开发DDD 的由来与核心概念:实体、值对象、聚合、仓储、分层架构与 Go 项目目录落地。
3
Grafana 可视化与监控
云原生与运维Grafana 的定位、常见数据源与 Grafana + Prometheus 经典监控链路。
4
kubectl port-forward 端口转发
云原生与运维kubectl port-forward 转发 Pod/Service、让局域网访问以及常用排查命令。
5
kubectl 常用命令速查
云原生与运维kubectl 查看集群/资源/日志、进入容器、本地访问服务与部署删除的常用命令。
随机文章随机推荐











