云原生 Docker Dockerfile 构建配置

本文涉及的产品
Serverless 应用引擎 SAE,800核*时 1600GiB*时
容器镜像服务 ACR,镜像仓库100个 不限时长
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
简介: 【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 指令

相关文章
|
2天前
|
运维 Kubernetes Cloud Native
云原生时代下,如何高效构建与部署微服务
【9月更文挑战第8天】随着云计算技术的飞速发展,云原生已成为现代软件架构的重要趋势。本文将深入浅出地介绍云原生概念、微服务架构的优势以及如何在云平台上高效构建和部署微服务。我们将通过实际的代码示例,展示在Kubernetes集群上部署一个简单的微服务应用的过程,帮助读者理解云原生环境下的微服务开发和运维实践。
|
9天前
|
应用服务中间件 nginx Docker
Docker镜像-基于DockerFile制作编译版nginx镜像
这篇文章介绍了如何基于Dockerfile制作一个编译版的nginx镜像,并提供了详细的步骤和命令。
84 17
Docker镜像-基于DockerFile制作编译版nginx镜像
|
8天前
|
Linux Docker Windows
Docker配置https证书案例
本文介绍了如何为Docker的Harbor服务配置HTTPS证书,包括安装Docker和Harbor、修改配置文件以使用证书、生成自签名证书、配置证书以及验证配置的步骤。
15 2
Docker配置https证书案例
|
9天前
|
应用服务中间件 Linux nginx
Docker镜像-基于DockerFile制作yum版nginx镜像
本文介绍了如何使用Dockerfile制作一个基于CentOS 7.6.1810的yum版nginx镜像,并提供了详细的步骤和命令。
51 20
|
3天前
|
Cloud Native 测试技术 持续交付
云原生技术:构建现代应用的基石
在数字化转型的浪潮中,云原生技术如同一艘承载梦想的巨轮,引领企业乘风破浪。本文将深入浅出地探讨云原生的核心概念、关键技术和实践方法,旨在为读者揭开云原生的神秘面纱,展现其在现代应用构建中的强大魅力。让我们一起踏上这场云原生之旅,感受技术变革带来的无限可能。
19 7
|
9天前
|
Cloud Native 关系型数据库 Serverless
基于阿里云函数计算(FC)x 云原生 API 网关构建生产级别 LLM Chat 应用方案最佳实践
本文带大家了解一下如何使用阿里云Serverless计算产品函数计算构建生产级别的LLM Chat应用。该最佳实践会指导大家基于开源WebChat组件LobeChat和阿里云函数计算(FC)构建企业生产级别LLM Chat应用。实现同一个WebChat中既可以支持自定义的Agent,也支持基于Ollama部署的开源模型场景。
|
6天前
|
Cloud Native 持续交付 Docker
云原生技术实践:Docker容器化部署教程
【9月更文挑战第4天】本文将引导你了解如何利用Docker这一云原生技术的核心工具,实现应用的容器化部署。文章不仅提供了详细的步骤和代码示例,还深入探讨了云原生技术背后的哲学,帮助你理解为何容器化在现代软件开发中变得如此重要,并指导你如何在实际操作中运用这些知识。
|
11天前
|
Kubernetes Cloud Native 开发者
探索云原生技术:从Docker到Kubernetes的旅程
【8月更文挑战第31天】云原生技术正在改变软件开发、部署和运维的方式。本文将带你了解云原生的核心概念,并通过实际代码示例,展示如何使用Docker容器化应用,并进一步通过Kubernetes进行集群管理。我们将一起构建一个简单的微服务架构,体验云原生带来的高效与便捷。
|
11天前
|
Kubernetes Cloud Native 调度
云原生技术实践:构建高效、可扩展的微服务架构
本文深入探讨了云原生技术在现代软件架构中的应用,特别是如何利用这些技术构建高效、可扩展的微服务架构。文章首先介绍了云原生的基本概念和优势,然后通过一个实际案例,展示了如何使用Kubernetes和Docker等工具来部署和管理微服务。最后,文章还讨论了云原生技术面临的挑战和未来的发展趋势。 【8月更文挑战第31天】
|
11天前
|
Kubernetes Cloud Native 云计算
云原生入门:从Docker到Kubernetes的旅程
【8月更文挑战第31天】 在数字化转型的浪潮中,云原生技术成为推动现代软件开发的关键力量。本文将引导读者理解云原生的基本概念,通过Docker和Kubernetes的实际应用示例,展示如何在云平台上部署和管理容器化应用。我们将一起探索服务编排、持续集成和微服务架构的实践之路,旨在为初学者揭开云原生技术的神秘面纱,并激发对这一前沿领域的深入探索。