Yang's blog Yang's blog
首页
Java
密码学
机器学习
命令手册
关于
友链
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

xiaoyang

编程爱好者
首页
Java
密码学
机器学习
命令手册
关于
友链
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • System

    • HomeBrew介绍
  • Git

    • Git 命令入门指南
  • shell

    • shell编程中常用的符号
  • docker

    • Docker介绍
    • Dockerfile :构建自己的 Docker 镜像
      • 1. 什么是 Dockerfile?
      • 2. 基本指令介绍
        • FROM
        • WORKDIR
        • COPY/ADD
        • RUN
        • EXPOSE
        • ENV
        • CMD/ENTRYPOINT
      • 3. 实际示例
      • 4. 构建镜像
    • Docker Compose :容器编排工具
  • Linux

    • Linux基础知识
    • Linux 文件系统
    • Linux 用户管理
    • Linux 权限与安全
    • Linux 网络管理
    • Linux 进程管理
    • Linux 常用命令
  • 命令手册
  • docker
xiaoyang
2025-02-08
目录

Dockerfile :构建自己的 Docker 镜像推荐

# Dockerfile :构建自己的 Docker 镜像

image-20250208115907652

# 1. 什么是 Dockerfile?

Dockerfile 是一个文本文件,包含了构建 Docker 镜像的所有指令。

Dockerfile 是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明。

通过定义一系列命令和参数,Dockerfile 指导 Docker 构建一个自定义的镜像。

# 2. 基本指令介绍

# FROM

指定基础镜像,所有构建的起点:

FROM nginx
1

# WORKDIR

设置工作目录:

WORKDIR /app
1

# COPY/ADD

复制文件到镜像中:

COPY ./source /app/
# 或者用 ADD(支持自动解压 tar 文件)
ADD ./source.tar /app/
1
2
3

# RUN

执行构建命令:

# 单行命令
RUN apt-get update

# 多行命令(推荐写法)
RUN apt-get update \
    && apt-get install -y nginx \
    && rm -rf /var/lib/apt/lists/*
1
2
3
4
5
6
7

# EXPOSE

声明容器运行时监听的端口:

EXPOSE 80
1

# ENV

设置环境变量:

ENV NODE_VERSION 14.17.0
1

# CMD/ENTRYPOINT

指定容器启动时运行的命令:

# CMD 可以被覆盖
CMD ["nginx", "-g", "daemon off;"]

# ENTRYPOINT 不会被覆盖
ENTRYPOINT ["nginx"]
1
2
3
4
5

# 3. 实际示例

这是一个构建 Node.js 应用的简单示例:

# 使用 Node.js 官方镜像作为基础
FROM node:14

# 设置工作目录
WORKDIR /app

# 复制 package.json 和 package-lock.json
COPY package*.json ./

# 安装依赖
RUN npm install

# 复制源代码
COPY . .

# 暴露端口
EXPOSE 3000

# 启动应用
CMD ["npm", "start"]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

# 4. 构建镜像

在 Dockerfile 所在目录执行:

docker build -t myapp:1.0 .
1

通过这些基础知识,你就能开始构建自己的 Docker 镜像了。

编辑 (opens new window)
#docker
上次更新: 2025/04/01, 01:48:12

← Docker介绍 Docker Compose :容器编排工具→

最近更新
01
操作系统
03-18
02
Nginx
03-17
03
后端服务端主动推送消息的常见方式
03-11
更多文章>
Theme by Vdoing | Copyright © 2023-2025 xiaoyang | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式