云原生 Docker Dockerfile 构建配置

简介: 【1月更文挑战第9天】云原生 Docker Dockerfile 构建配置

1.Dockerfile 概述:

Dockerfile 可以认为是Docker镜像的描述文件,是由一系列命令和参数构成的脚本。主要作用是用来构建docker镜像的构建文件。

通过Dockerfile 文件构建一个属于自己的镜像。

1.1 Dockerfile 构建命令:

docker build -t 镜像名:版本号 .Dockerfile文件所在位置

1.2 Dockerfile 构建镜像流程:

2.Dockerfile 文件解析:

https://docs.docker.com/engine/reference/builder/

2.1 Dockerfile 基础知识:

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

Dockerfile用于构建Docker镜像,Dockerfile文件是由一行行命令语句组成,基于这些命令即可以构建一个镜像,比如下面就是一个Dockefile文件样例:

##  Dockerfile文件格式
# This dockerfile uses the ubuntu image
# VERSION 2 - EDITION 1
# Author: docker_user
# Command format: Instruction [arguments / command] ..
# 1、第一行必须指定 基础镜像信息
FROM ubuntu
# 2、维护者信息
MAINTAINER docker_user docker_user@email.com
# 3、镜像操作指令
RUN echo "deb http://archive.ubuntu.com/ubuntu/ raring main universe" >> /etc/apt/sources.list
RUN apt-get update && apt-get install -y nginx
RUN echo "\ndaemon off;" >> /etc/nginx/nginx.conf
# 4、容器启动执行指令
CMD /usr/sbin/nginx

2.2 Dockerfile 组成:

  • 基础镜像信息
  • 维护者信息
  • 镜像操作指令
  • 容器启动时执行指令

2.3 Dockerfile 指令:

所有指令的执行都是基于 Dockerfile的上下文路径(也就是Dockerfile 当前目录位置开始)!!!

FROM 指令:

Dockerfile文件的第一条指令必须为FROM指令。并且,如果同一个Dockerfile中创建多个镜像时,可以使用多个FROM指令(每个镜像一次)。

FROM <image>
FROM<imge>:<tag>

MAINTAINER 指令:

指定维护者信息(已经废弃)

MAINTAINER <name>

RUN 指令:

RUN指令将当前镜像基础上执行指定命令,并提交为新的镜像,当命令较长时可以使用 \ 来换行。

RUN <command>

EXPOSE 指令:

暴露的端口更像是指明了该容器提供的服务需要用到的端口,EXPOSE 并不会直接将端口自动和宿主机某个端口建立映射关系。(仅仅是声明暴露的端口)

EXPOSE <port>[<port>...]

WORKDIR 指令:

WORKDIR 文件路径

ENV 指令:

指定一个环境变量,会被后续RUN指令使用,并在容器运行时保持。使用 $Key 对 Value值进行引用。

ENV <key> <value>
ENV <key>=<value>

ADD 指令:

复制指定的<src>到容器<dest>,ADD指令 + URL 会自动下载文件。

ADD <src> <dest>

COPY 指令:

复制指定的<src>到容器<dest>

COPY <src> <dest>

VOLUME 指令:

VOLUME 目录路径

CMD 指令:

指定启动容器时执行的命令,每个Dockerfile只能有一调CMD命令。如果指定了多个命令,只有最后一条会被执行。如果用户启动容器时候,只有最后一条会被执行。如果用户启动容器时执行了运行命令,则会覆盖掉CMD指定的命令。

CMD 指令

ENTRYPOINT 指令:

指定启动容器时执行的命令

ENTRYPOINT 指令

相关文章
|
3月前
|
消息中间件 人工智能 安全
云原生进化论:加速构建 AI 应用
本文将和大家分享过去一年在支持企业构建 AI 应用过程的一些实践和思考。
827 48
|
4月前
|
人工智能 前端开发 Docker
从本地到云端:用 Docker Compose 与 Offload 构建可扩展 AI 智能体
在 AI 智能体开发中,开发者常面临本地调试与云端部署的矛盾。本文介绍如何通过 Docker Compose 与 Docker Offload 解决这一难题,实现从本地快速迭代到云端高效扩容的全流程。内容涵盖多服务协同、容器化配置、GPU 支持及实战案例,助你构建高效、一致的 AI 智能体开发环境。
467 2
从本地到云端:用 Docker Compose 与 Offload 构建可扩展 AI 智能体
|
5月前
|
运维 NoSQL Serverless
|
4月前
|
Cloud Native 算法 区块链
站在巨人的肩膀上:gRPC通过HTTP/2构建云原生时代的通信标准
gRPC是云原生时代高效通信标准,基于HTTP/2实现,支持四种服务方法。通过.proto文件定义接口,生成多语言Stub,实现跨语言调用。其请求响应结构清晰,结合Headers、Data帧与Trailers,保障高性能与可扩展性,广泛应用于微服务架构中。
241 0
|
4月前
|
JavaScript Docker 容器
使用Docker多阶段构建优化镜像大小
使用Docker多阶段构建优化镜像大小
413 100
|
4月前
|
缓存 安全 Linux
优化Docker镜像大小的多阶段构建实践
优化Docker镜像大小的多阶段构建实践
341 99
|
4月前
|
缓存 前端开发 Docker
Docker Layer Caching:加速你的容器构建
Docker Layer Caching:加速你的容器构建
|
4月前
|
安全 Go Docker
使用Docker多阶段构建优化镜像大小
使用Docker多阶段构建优化镜像大小
|
3月前
|
Java Linux 虚拟化
【Docker】(1)Docker的概述与架构,手把手带你安装Docker,云原生路上不可缺少的一门技术!
1. Docker简介 1.1 Docker是什么 为什么docker会出现? 假定您在开发一款平台项目,您的开发环境具有特定的配置。其他开发人员身处的环境配置也各有不同。 您正在开发的应用依赖于您当前的配置且还要依赖于某些配置文件。 您的企业还拥有标准化的测试和生产环境,且具有自身的配置和一系列支持文件。 **要求:**希望尽可能多在本地模拟这些环境而不产生重新创建服务器环境的开销 问题: 要如何确保应用能够在这些环境中运行和通过质量检测? 在部署过程中不出现令人头疼的版本、配置问题 无需重新编写代码和进行故障修复
408 2
|
4月前
|
Java Docker 容器
使用Docker多阶段构建优化镜像大小
使用Docker多阶段构建优化镜像大小
228 8