Docker - Dockerfile

embedded/2024/12/22 17:54:40/

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

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/embedded/15117.html

相关文章

写一个函数实现:将一个5*5的矩阵中最大的元素放在中心,4个角分别放4个最小的元素(顺序为从左到右,从上到下依次从小到大存放)

#include<stdio.h> void change(int *p){ int i,j,temp; int *pmax,*pmin; // 初始化最大值和最小值的指针 pmaxp; pminp; // 遍历矩阵&#xff0c;寻找最大值和最小值 for(i0;i<5;i) for(ji;j<5;j) { if(*pmax<…

华为数字化转型与数据管理实践介绍(附PPT下载)

华为作为全球领先的信息与通信技术&#xff08;ICT&#xff09;解决方案提供商&#xff0c;在数字化转型和数据管理领域拥有丰富的实践经验和技术积累。其数字化转型解决方案旨在帮助企业通过采用最新的ICT技术&#xff0c;实现业务流程、组织结构和文化的全面数字化&#xff0…

2024-04-24 问AI: 在深度学习中,CUDA 是什么?

文心一言 在深度学习中&#xff0c;CUDA&#xff08;Compute Unified Device Architecture&#xff09;是由NVIDIA公司开发的一种并行计算平台和编程模型。它的主要目的是利用GPU&#xff08;图形处理单元&#xff09;的强大计算能力来加速各种计算任务&#xff0c;包括深度学…

掌握未来通信技术:5G核心网基础入门

&#x1f525;个人主页&#xff1a;Quitecoder &#x1f525;专栏&#xff1a;5GC笔记仓 朋友们大家好&#xff0c;本篇文章是我们新内容的开始&#xff0c;我们本篇进入5GC的学习&#xff0c;希望大家多多支持&#xff01; 目录 一.核心网的演进2G核心网2.5G核心网3G核心网4G…

10:00面试,10:08就出来了,问的问题有点变态。。。

从小厂出来&#xff0c;没想到在另一家公司又寄了。 到这家公司开始上班&#xff0c;加班是每天必不可少的&#xff0c;看在钱给的比较多的份上&#xff0c;就不太计较了。没想到8月一纸通知&#xff0c;所有人不准加班&#xff0c;加班费不仅没有了&#xff0c;薪资还要降40%…

Docker 安装 Mongo

创建宿主机目录 在你的宿主机上创建必要的目录来存储 MongoDB 的数据和配置文件。这样做可以保证即使容器被删除&#xff0c;数据也能得到保留。 mkdir -p /develop/mongo/data mkdir -p /develop/mongo/config创建 MongoDB 配置文件 创建一个名为 mongod.conf 的 MongoDB 配…

Xtrabackup导致主从延时问题

背景问题 公司数据库备份采用Xtrabackup&#xff0c; 备份期间会导致数据库实例产生主从延时&#xff0c;增加数据库告警数量。而且数据库主从延时会影响数据访问的准确性&#xff0c;延时期间如果主库发生故障&#xff0c;会有数据丢失的风险&#xff1b;延时也可能影响抽数等…

WebSocket发送与接收数据

创建websocket对象&#xff0c;参数为服务器websockets地址&#xff1a; websocket new WebSocket("ws:127.0.0.1:7001"); 1、发送文本数据 websocket.send(我太笨了&#xff0c;不知道你说的是啥) 2、发送对象数据 发送对象的话需要通过 JSON.parse() 和JSON.…