Docker - Dockerfile

devtools/2024/9/22 15:41:04/

原文地址,使用效果更佳!

Docker - Dockerfile | CoderMast编程桅杆Docker - Dockerfile 什么是Dockerfile? DockerFile 是用于构建 Docker 镜像的文本文件。Docker 是一种容器化平台,允许开发者将应用程序及其依赖项打包到一个可移植的容器中,以确保在不同环境中的一致性和可移植性。 DockerFile 包含一系列指令,这些指令描述了如何构建 Docker 镜像。每个指令都...icon-default.png?t=N7T8https://www.codermast.com/dev-tools/docker/docker-dockerfile.html

dockerfile">什么是Dockerfile?

DockerFile 是用于构建 Docker 镜像的文本文件。Docker 是一种容器化平台,允许开发者将应用程序及其依赖项打包到一个可移植的容器中,以确保在不同环境中的一致性和可移植性。

DockerFile 包含一系列指令,这些指令描述了如何构建 Docker 镜像。每个指令都对应一个操作,例如安装软件包、设置环境变量、复制文件等。当 Docker 引擎读取 DockerFile 时,它会逐行执行其中的指令,以最终创建一个镜像。

示例说明

在空目录下,新建一个名为 Dockerfile 的文件,并在其中添加如下内容。

# 使用官方的基础镜像
FROM ubuntu:latest# 设置工作目录
WORKDIR /app# 复制当前目录下的所有文件到工作目录
COPY . .# 安装依赖
RUN apt-get update && apt-get install -y \python3 \python3-pip# 安装应用程序依赖
RUN pip3 install -r requirements.txt# 暴露应用程序的端口
EXPOSE 5000# 定义启动命令
CMD ["python3", "app.py"]

在上面的示例中:

  • FROM 指定了基础镜像,即用作构建的起点的操作系统和环境。
  • WORKDIR 设置了工作目录,即后续指令执行时的当前工作目录。
  • COPY 将当前目录下的所有文件复制到容器的工作目录。
  • RUN 执行命令,例如更新包列表、安装软件等。
  • EXPOSE 声明应用程序将监听的端口。
  • CMD 定义了容器启动时要执行的默认命令。

通过编写 DockerFile,开发者可以将应用程序的构建过程和运行时环境的配置以代码的方式进行描述,实现了可重复、可移植和可自动化的容器化部署。

镜像结构

Docker File 文件中的每条指令都会创建一个新的镜像层,当本地环境中已经下载好了某些镜像,那么会直接使用这些镜像,不会重复下载,提高了效率。

但是过多的层也会导致镜像过大,可以适当进行简化,仅在关键部分进行分层。

 

编写规则

  • 每条保留字指令都必须为大写字母且后面要跟随至少一个参数
  • 指令顺序执行,遵循从上到下原则
  • #表示注释
  • 每条指令都会创建一个新的镜像层,并对镜像进行提交

指令汇总

  • FROM: 指定基础镜像,作为构建的起点。

FROM ubuntu:latest
  • WORKDIR: 设置工作目录,后续指令将在该目录下执行。

WORKDIR /app
  • COPY: 复制文件或目录到容器中。

COPY . .
  • ADD: 类似于COPY,还支持URL解压缩和tar文件自动解压。

ADD https://example.com/file.tar.gz/app/
  • RUN: 执行命令,通常用于安装软件包、更新系统等。

RUN apt-get update && apt-get install -y python3
  • ENV: 设置环境变量。

ENV MY_VAR=value
  • EXPOSE: 声明容器将监听的端口,但并不映射到主机。

EXPOSE 80
  • CMD: 定义容器启动时要执行的默认命令。可以被覆盖。

CMD ["python", "app.py"]
  • ENTRYPOINT: 定义容器启动时要执行的默认命令。不可被覆盖,但可以追加参数。

ENTRYPOINT ["nginx", "-g", "daemon off;"]
  • VOLUME: 创建挂载点,用于持久化数据。

VOLUME /data
  • USER: 设置执行后续命令的用户或 UID。

USER appuser
  • ARG: 定义构建时的变量,可通过构建命令传递。

ARG version=latest
  • LABEL: 添加元数据,通常用于描述镜像。

LABEL version="1.0" description="My custom image" author="codermast"

Docker File 指令官方文档

Dockerfile reference | Docker Docs


http://www.ppmy.cn/devtools/8006.html

相关文章

【技术】Spring Boot 将 Word 转换为 PDF 2.0 版本

之前写过一篇 Spring Boot 将 Word 转换为 PDF 的文章,但是有评论说导入依赖有问题,还存在依赖冲突的问题。索性再来一个完整版的代码,之前的完整版代码找不到了,又重新整理了一下,依赖导入和之前不太一样,…

【讲解下Spring Boot单元测试】

🌈个人主页: 程序员不想敲代码啊 🏆CSDN优质创作者,CSDN实力新星,CSDN博客专家 👍点赞⭐评论⭐收藏 🤝希望本文对您有所裨益,如有不足之处,欢迎在评论区提出指正,让我们共…

【FFmpeg】视频与图片互相转换 ( 视频与 JPG 静态图片互相转换 | 视频与 GIF 动态图片互相转换 )

文章目录 一、视频与 JPG 静态图片互相转换1、视频转静态图片2、视频转多张静态图片3、多张静态图片转视频 二、视频与 GIF 动态图片互相转换1、视频转成 GIF 动态图片2、 GIF 动态图片转成视频 一、视频与 JPG 静态图片互相转换 1、视频转静态图片 执行 ffmpeg -i input.mp4 …

《细节》如何轻松影响他人 - 三余书屋 3ysw.net

细节:如何轻松影响他人 大家好,今天我们要解读的书名叫《细节》,它的副标题是“如何轻松影响他人”。作者是罗伯特希奥迪尼,这本书的英文名是 "The Small Big",其中 "small" 是小的意思&#xff…

【未完成】【QT+OpenCV】车牌号检测 学习记录 遇到的问题

【QTOpenCV】车牌号检测 学习记录 首先在QT里面配置好OpenCV .pro文件中加入: INCLUDEPATH G:/opencv/build/include LIBS -L"G:/opencv/build/x64/vc14/lib"\-lopencv_core \-lopencv_imgproc \-lopencv_highgui \-lopencv_ml \-lopencv_video \-lo.c…

Linux-软件安装--jdk安装

jdk安装 前言1、软件安装方式二进制发布包安装rpm安装yum安装源码编译安装 2、安装jdk2.1、使用finalShell自带的上传工具将jdk的二进制发布包上传到Linux2.2、解压安装包2.3、配置环境变量![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/61ba9750e2e34638a39575c5…

李宏毅2022机器学习/深度学习 个人笔记(2)

本系列用于推导、记录该系列视频中本人不熟悉、或认为有价值的知识点 本篇记录第一讲(选修):神奇宝贝分类(续) 讲解如何用高斯概率分布假设来推导类似于逻辑斯蒂分布的表达式 如图,boundary变为直线&…

find和grep查找搜索命令常用的一些使用方式

目录 find和grep查找搜索命令常用的一些使用方式 一、find命令 二、grep命令 find和grep查找搜索命令常用的一些使用方式 一、find命令 我们知道在Windows系统中想要搜索查找文件,一般需要满足两个条件: 1、知道在哪些目录中查找 2、知道查找的内容&…