

Docker镜像是容器技术的核心,它就像是一个轻量级的、可执行的软件包,包含了运行应用所需的一切。无论是开发、测试还是部署,镜像都能让环境保持一致,避免"在我机器上能跑"的尴尬。今天我们就用大量实例带你玩转Docker镜像。




获取镜像就像在应用商店下载软件一样简单。使用docker pull
命令就能从Docker Hub拉取官方镜像。比如想用最新版Ubuntu,只需运行:
docker pull ubuntu:latest
查看本地镜像列表也很直观:
docker images
这个命令会显示所有已下载的镜像,包括镜像ID、仓库名、标签和大小。标签特别重要,它就像是软件的版本号,默认latest
表示最新版。
删除镜像可以用docker rmi
命令。比如要删除一个不再需要的Nginx镜像:
docker rmi nginx:alpine
注意正在运行的容器使用的镜像不能被删除,需要先停止容器。





Dockerfile是创建自定义镜像的配方文件。比如要构建一个简单的Python应用镜像:
FROM python:3.9-slim WORKDIR app COPY . . RUN pip install -r requirements.txt CMD ["python", "app.py"]
构建镜像命令很简单:
docker build -t my-python-app .
这个命令会根据当前目录的Dockerfile创建一个名为my-python-app
的镜像。-t
参数用来给镜像打标签,点号表示使用当前目录作为构建上下文。
多阶段构建是优化镜像大小的利器。比如构建一个Go应用:

FROM golang:1.16 AS builder WORKDIR go/src/app COPY . . RUN go build -o myapp

FROM alpine:latest
COPY --from=builder go/src/app/myapp . CMD ["./myapp"]
这样最终镜像只包含编译好的可执行文件,而不需要庞大的Go编译环境。




保存镜像到文件可以方便分享:
docker save -o myimage.tar my-python-app
这会创建一个包含镜像所有层的tar文件。
加载镜像也很直接:
docker load -i myimage.tar
推送到镜像仓库让团队共享变得简单。首先登录Docker Hub:
docker login
然后标记你的镜像:
docker tag my-python-app username/my-python-app:v1
最后推送:
docker push username/my-python-app:v1





查看镜像历史能了解构建过程:
docker history my-python-app
镜像安全扫描很重要:
docker scan my-python-app
这会检查镜像中的已知漏洞。
清理无用镜像释放空间:
docker image prune
使用Alpine基础镜像能显著减小体积。比如Node.js应用:
FROM node:alpine
Alpine Linux只有5MB左右,比常规Linux发行版小很多。
多架构镜像让应用能在不同CPU架构上运行。构建时指定平台:
docker build --platform linux/arm64 -t myapp-arm64 .
Docker镜像是现代应用部署的基石,掌握这些技巧能让你在开发运维中游刃有余。从简单的拉取使用到复杂的自定义构建,镜像技术为软件交付提供了前所未有的便利。




