使用Dockerfile创建自定义镜像的详细步骤

 更新时间:2025年06月22日 09:08:27   作者:思静鱼  
使用 Dockerfile 创建自定义镜像的过程非常清晰,通常包括定义基础镜像、安装依赖、复制代码、设置环境变量和启动命令等步骤,下面详细讲解从零创建自定义镜像的完整流程,需要的朋友可以参考下

一、什么是 Dockerfile?

Dockerfile 是一个文本文件,定义了如何构建 Docker 镜像的指令脚本。每条指令都会创建镜像的一层。

二、自定义镜像的基本步骤

示例项目结构:

myapp/
├── Dockerfile
├── app.py
├── requirements.txt

三、Dockerfile 示例(以 Python 项目为例)

# 1. 使用官方基础镜像
FROM python:3.11-slim

# 2. 设置工作目录
WORKDIR /app

# 3. 拷贝代码和依赖
COPY requirements.txt ./
RUN pip install --no-cache-dir -r requirements.txt

# 4. 拷贝应用代码
COPY app.py ./

# 5. 设置环境变量(可选)
ENV TZ=Asia/Shanghai

# 6. 定义启动命令
CMD ["python", "app.py"]

四、构建镜像

在包含 Dockerfile 的目录下执行:

docker build -t my-python-app .

说明:

  • -t:指定镜像名称
  • .:当前目录为构建上下文(包含 Dockerfile)

五、运行自定义镜像

docker run -d -p 5000:5000 my-python-app

容器运行后可以访问服务(如 Flask):

http://localhost:5000

六、常用 Dockerfile 指令总结

指令作用
FROM指定基础镜像(必须第一行)
WORKDIR设置容器内工作目录
COPY拷贝文件到容器
RUN执行命令(如安装依赖)
ENV设置环境变量
EXPOSE声明端口(不映射,仅用于说明)
CMD容器启动时默认执行命令
ENTRYPOINT设置主执行命令(可与 CMD 结合)

七、优化建议(生产环境)

优化项示例或说明
使用 .dockerignore避免将 .git, venv, node_modules 等传入镜像上下文
使用多阶段构建(如 Java 项目)构建依赖在第一个阶段,运行用最小镜像
固定基础镜像版本避免使用 latest,例如:python:3.11.7
添加元信息使用 LABEL 记录镜像作者、版本等
适当清理缓存pip install --no-cache-dir 等防止镜像过大

八、示例:Java Spring Boot 项目 Dockerfile

FROM eclipse-temurin:17-jdk-alpine
WORKDIR /app
COPY target/myapp.jar app.jar
EXPOSE 8080
CMD ["java", "-jar", "app.jar"]

九、构建并推送镜像到镜像仓库(如 Docker Hub)

docker build -t myname/myapp:v1.0 .
docker login
docker push myname/myapp:v1.0

十、总结一句话:

使用 Dockerfile 构建镜像是容器化的第一步,只需定义清晰的构建步骤,即可快速打造可部署、可复用的镜像,支持跨环境一致运行。

以上就是使用Dockerfile创建自定义镜像的详细步骤的详细内容,更多关于Dockerfile创建自定义镜像的资料请关注脚本之家其它相关文章!

相关文章

  • Docker Compose引用环境变量的方法示例

    Docker Compose引用环境变量的方法示例

    在项目中,往往需要在 docker-compose.yml 文件中使用环境变量来控制不同的条件和使用场景。本文集中介绍 docker compose 引用环境变量的方式,感兴趣的小伙伴们可以参考一下
    2018-12-12
  • docker-compose中link和external_links的区别及说明

    docker-compose中link和external_links的区别及说明

    拆分docker-compose.yml导致depends_on、links和external网络配置失效,因compose限制及Portainer命名冲突,解决方案为使用external_links或手动创建网络
    2025-09-09
  • Spring Boot Docker打包工具小结

    Spring Boot Docker打包工具小结

    本文对几种常见的Spring Boot Docker打包工具进行了简单总结,感兴趣的朋友跟随小编一起看看吧
    2021-05-05
  • WIN10下安装Docker的教程

    WIN10下安装Docker的教程

    本文通过图文并茂的形式给大家介绍了win10下安装Docker的教程,非常不错,具有参考借鉴价值,感兴趣的朋友一起看看吧
    2016-10-10
  • Docker容器网络基础概述

    Docker容器网络基础概述

    这篇文章主要介绍了Docker容器网络基础概述,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-09-09
  • docker mysql容器如何开启慢查询日志

    docker mysql容器如何开启慢查询日志

    本文主要介绍了docker mysql容器如何开启慢查询日志,文中根据实例编码详细介绍的十分详尽,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-03-03
  • Docker挂载的三种方法及使用场景分析

    Docker挂载的三种方法及使用场景分析

    在Docker容器中,持久化存储和数据共享是非常重要的功能,Docker提供了三种主要的方法来实现宿主机和容器之间的数据挂载,本文将详细介绍这三种方法的基本语法,并探讨它们各自的使用场景,需要的朋友可以参考下
    2024-05-05
  • docker安装tomcat8的实现方法

    docker安装tomcat8的实现方法

    这篇文章主要介绍了docker安装tomcat8的实现方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-02-02
  • Docker删除某个镜像的实现方法

    Docker删除某个镜像的实现方法

    在使用 Docker 时,经常需要删除不再需要的镜像、容器和卷,以释放存储空间,本文主要介绍了Docker删除某个镜像的实现方法,具有一定的参考价值,感兴趣的可以了解一下
    2024-02-02
  • docker运行jar包加载外部配置文件方式

    docker运行jar包加载外部配置文件方式

    这篇文章主要介绍了docker运行jar包加载外部配置文件方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-08-08

最新评论