暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Docker镜像:从入门到精通的实战指南

韩公子的Linux大集市 2025-04-09
159


Docker镜像是容器技术的核心,它就像是一个轻量级的、可执行的软件包,包含了运行应用所需的一切。无论是开发、测试还是部署,镜像都能让环境保持一致,避免"在我机器上能跑"的尴尬。今天我们就用大量实例带你玩转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镜像是现代应用部署的基石,掌握这些技巧能让你在开发运维中游刃有余。从简单的拉取使用到复杂的自定义构建,镜像技术为软件交付提供了前所未有的便利。


文章转载自韩公子的Linux大集市,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论