当前位置: 首页 > news >正文

Docker镜像的制作

什么是Docker镜像?

Docker镜像是一个轻量级、独立的可执行软件包,包含运行应用程序所需的一切:代码、运行时、系统工具、系统库和设置。镜像是容器的基础,容器是镜像的运行实例。

准备工作

安装Docker
首先确保你的系统已安装Docker:
Windows/macOS:

下载Docker Desktop并安装
访问官网Docker Desktop
根据需求下载对应安装包安装

Linux (Ubuntu示例):

sudoaptupdatesudoaptinstalldocker.iosudo systemctlenabledockersudo systemctl startdocker

验证安装

docker--versiondockerrun hello-world

创建你的第一个Docker镜像

方法一:使用Dockerfile(推荐)

1.创建Dockerfile

进行项目所在文件创建文件重命名为Dockerfile
以node项目为例:

dockerfile # 基础镜像 FROM node:18 #复制源码 ADD . /my-app # 设置工作目录 WORKDIR /my-app # 安装依赖 RUN npm install && npm install -g nodemon # 运行应用 CMD nodemon db-serve.js # 暴露端口(服务启动端口) EXPOSE 8011

2.构建镜像

记得先启动docker

dockerbuild.-tmy-app

可以使用docker images命令查看镜像是否构建成功

3. 运行容器

dockerrun-p50001:8011 my-app

请求接口后发现可以请求到接口(50001是对外暴露接口,8011是部署服务在容器内的端口)

方法二:从现有容器创建镜像

1. 运行基础容器

dockerrun-itubuntu:20.04 /bin/bash

2. 在容器内安装软件

在容器内部执行

aptupdateaptinstall-ynginxexit

3. 提交更改

# 获取容器IDdockerps-a# 提交为新镜像dockercommit<container_id>my-nginx-image

深入理解Dockerfile指令
常用指令详解

FROM

指定基础镜像:

dockerfile FROM ubuntu:20.04 FROM python:3.9-alpine FROM node:18

RUN

执行命令:

dockerfile # shell格式 RUN apt update && apt install -y python3 # exec格式(推荐) RUN ["apt", "update"]

COPY vs ADD

复制文件:

dockerfile # 复制本地文件到镜像 COPY . /app # ADD可以自动解压tar文件和从URL下载 ADD https://example.com/file.tar.gz /tmp/

CMD vs ENTRYPOINT

定义启动命令:

dockerfile # CMD可以被docker run覆盖 CMD ["python", "app.py"] # ENTRYPOINT作为主要可执行文件 ENTRYPOINT ["python"] CMD ["app.py"]

ENV

设置环境变量:

dockerfile ENV APP_HOME=/app ENV PYTHONPATH=/app/src

WORKDIR

设置工作目录:

dockerfile WORKDIR /app

.dockerignore文件

创建.dockerignore来排除不必要的文件:

text .git .gitignore README.md Dockerfile .dockerignore __pycache__ *.pyc *.pyo *.pyd .env

高级技巧

多阶段构建

dockerfile # 构建阶段 FROM node:18 as build WORKDIR /app COPY package*.json ./ RUN npm ci COPY . . RUN npm run build # 生产阶段 FROM nginx:alpine COPY --from=build /app/dist /usr/share/nginx/html EXPOSE 80 CMD ["nginx", "-g", "daemon off;"]

使用ARG和ENV

dockerfile ARG APP_VERSION=latest ENV APP_VERSION=${APP_VERSION} # 构建时传递参数 # docker build --build-arg APP_VERSION=1.0.0 -t myapp .

镜像管理

查看镜像
dockerimagesdockerimagels
给镜像打标签
dockertag my-app myregistry.com/my-app:v1.0
推送镜像到仓库
dockerlogindockerpush myregistry.com/my-app:v1.0
删除镜像
dockerrmi my-appdockerimage prune# 清理悬空镜像

调试技巧

检查镜像层次
dockerhistorymy-app
交互式运行
dockerrun-itmy-app /bin/bash
查看容器日志
dockerlogs<container_id>

常见问题解决

1. 镜像构建太慢

  • 使用.dockerignore文件
  • 合理利用Docker缓存层
  • 使用更小的基础镜像

2. 镜像太大

  • 使用多阶段构建
  • 选择alpine或slim版本的基础镜像
  • 清理不必要的文件

权限问题

  • 在Dockerfile中创建非root用户
  • 正确处理文件权限
http://www.jsqmd.com/news/541007/

相关文章:

  • htop终极指南:如何优雅地管理进程生命周期和信号发送
  • 终极ente/auth安全加固指南:3步防御2FA令牌劫持
  • 终极指南:如何快速开发自定义Prometheus导出器Helm Chart
  • eBPFxdp prog
  • 2026年AIGC论文检测指南:精选几个好用的网站,AIGC免费论文检测/AIGC检测,AIGC论文检测网站口碑排行
  • 如何构建多语言文件系统:libfuse国际化支持完整指南
  • OFA视觉蕴含模型保姆级教学:从环境配置到实际应用全流程
  • 2026年3月淮安搬家保洁公司最新推荐:居民搬家、企业搬厂、保洁服务等领域选择指南 - 海棠依旧大
  • 九江生发理疗哪家好?黑奥秘四大专利成分激活毛囊促生发 - 美业信息观察
  • Uvicorn源码中的中介者模式:组件解耦与通信中心
  • 2026年淮安搬家公司参考指南:淮安市万弘搬家有限公司、淮安退伍军人搬家、长短途搬家、正规搬家、企业搬、鱼缸钢琴搬运、淮安搬家保洁一站式服务 - 海棠依旧大
  • 0 元学嵌入式 GUI!保姆级 LVGL+MicroPython 教程开更,从理论到实战全搞定
  • Coze本地部署实战:从零到一构建你的AI智能体开发环境
  • 利用快马平台快速构建高清乱码生成器:编码错误可视化原型开发指南
  • MangoHud电源使用监控工具:自定义脚本终极指南
  • Windows Defender一键禁用工具:三步彻底关闭系统安全防护的完整指南
  • 车机开发中如何卸载蓝牙驱动及安装蓝牙驱动
  • 前端性能优化终极指南:使用Javalin实现静态资源压缩与智能缓存
  • 终极指南:ente/auth开发环境搭建从源码到运行的完整步骤
  • 如何用Bats自动化测试框架构建高可用性系统:验证故障转移逻辑的完整指南 [特殊字符]
  • Ubuntu上安装 WinBoat(让linux上运行windows软件)
  • 实测2-5分钟:CogVideoX-2b生成速度与画质平衡的真实体验报告
  • FLT-3L蛋白在急性髓系白血病FLT3突变研究中的意义
  • REST Client扩展终极配置迁移指南:从旧版本平滑升级到最新版本
  • pdf2htmlEX代码质量门禁实施:从设置到执行的完整流程
  • 编码规范
  • 2026年3月厦门发电机出租公司最新推荐:发电机、发电车租赁及泉州、漳州、莆田及各区域适配指南适配指南 - 海棠依旧大
  • SEO_网站SEO排名下降的常见原因及解决办法(304 )
  • 【优化求解】基于matlab粒子群算法PSO牛乳酪蛋白颗粒粒径分布反演【含Matlab源码 15228期】含参考文献
  • 2025终极发布指南|ente/auth从代码到用户的完整发布流程