当前位置: 首页 > news >正文

西安正规网站建设报价网站推广的技术有哪些

西安正规网站建设报价,网站推广的技术有哪些,股票大宗交易平台,域名出售引言 在容器化技术日益普及的今天,Dockerfile 成为了构建 Docker 镜像的核心工具。通过编写 Dockerfile,开发者可以将应用程序及其依赖打包成一个可移植、可复用的镜像,从而简化部署和运维工作。本文将详细介绍 Dockerfile 的基本概念、常用指…

引言

  在容器化技术日益普及的今天,Dockerfile 成为了构建 Docker 镜像的核心工具。通过编写 Dockerfile,开发者可以将应用程序及其依赖打包成一个可移植、可复用的镜像,从而简化部署和运维工作。本文将详细介绍 Dockerfile 的基本概念、常用指令、制作镜像实例以及优化技巧,帮助读者掌握如何构建简单高效的容器镜像。

Dockerfile 简介

Dockerfile 是一个包含了一系列命令的文本文件,这些命令用于自动化地创建一个 Docker 镜像。通过编写 Dockerfile,开发者可以将环境配置、应用程序代码、依赖关系等打包成一个镜像,从而快速创建容器。用户可以将自己的应用打包成镜像,让应用在容器中运行,也可以对官方镜像进行扩展,打包成适合生产环境的应用镜像。

Dockerfile 常用指令

2.1 FROM:指定基础镜像

# 格式
FROM <image:[版本标签]>
# 示例
FROM centos
FROM ubuntu:20.04

FROM 指令用于指定构建新镜像时使用的基础镜像,通常是 Dockerfile 的第一个有效指令。如果不指定版本标签,默认使用 latest

2.2 LABEL:添加镜像的元数据

# 格式
LABEL <key>=<value> <key>=<value>....
# 示例
LABEL version="2.0" description="业务系统第二个版本"

LABEL 指令使用键值对方式为镜像添加元数据。一条 LABEL 可以指定多条元数据,尽量不要写多个 LABEL。

2.3 RUN:构建镜像时执行的命令

RUN 指令有两种执行方式:shell 执行和 exec 执行。

# 格式
RUN <command>
# 示例
RUN yum update -y

RUN 指令创建的中间镜像会被缓存,并在下次构建中使用。可以在构建时使用 --no-cache 取消缓存。

Exec 执行
# 格式
RUN ["executable", "参数1", "参数2"]
# 示例
RUN ["/bin/bash", "-c", "echo hello"]

2.4 ENV:在容器内部设置环境变量

# 格式
ENV <key> <value>
# 示例
ENV MYPATH /usr/local

ENV 指令用于在容器内部设置环境变量。

2.5 ADD:将本地文件添加到镜像中

# 语法
ADD <src> <dest>
ADD ["src", "dest"]
# 示例
ADD nginx.tar /opt

ADD 指令类似于 scp,但不需要用户名和密码权限验证。tar 类型文件会自动解压,可以访问网络资源,类似 wget。建议使用绝对路径,尽量不要把 <src> 写成一个文件夹。

2.6 COPY:将文件或目录复制到镜像中

# 语法
COPY <src> <dest>
COPY ["<src>", "<dest>"]
# 示例
COPY myapp.jar /app/

COPY 指令的功能类似 ADD,但不会自动解压文件,也不能访问网络资源。COPY 的只能是本地文件,其他用法一致。

2.7 VOLUME:指定持久化目录

# 格式
VOLUME ["/path/to/dir"]
# 示例
VOLUME ["/data"]
VOLUME ["/data/log", "/data/config"]

VOLUME 指令用于指定持久化目录。卷可以在容器间共享和重用,修改卷后会立即生效,对卷的修改不会对镜像产生影响。

2.8 CMD:容器启动时运行的命令(不常用)

# 语法
CMD ["executable", "param1", "param2"]
CMD command param1 param2
# 示例
CMD echo $LANG

CMD 指令用于指定容器启动时运行的命令。如果写了多条 CMD 指令,只有最后一条生效。

2.9 ENTRYPOINT:容器启动时运行的命令(常用)

# 语法
ENTRYPOINT ["executable", "param1", "param2"]
ENTRYPOINT command param1 param2
# 示例
ENTRYPOINT java -jar /data/config.jar

ENTRYPOINT 指令也用于指定容器启动时运行的命令。与 CMD 不同,ENTRYPOINT 不会被运行的 command 覆盖,而 CMD 则会被覆盖。如果同时写了 ENTRYPOINT 和 CMD,CMD 指定的内容将作为 ENTRYPOINT 的参数。

2.10 EXPOSE:暴露容器运行时的监听端口给外部

# 格式
EXPOSE <port> [<port>...]
# 示例
EXPOSE 8080
EXPOSE 443/tcp 80/tcp

EXPOSE 指令用于暴露容器运行时的监听端口给外部。但需要注意的是,EXPOSE 并不会让容器的端口访问到主机。在运行时使用随机端口映射时,会自动随机映射 EXPOSE 的端口。

2.11 WORKDIR:工作目录

WORKDIR 指令用于设置工作目录,后续指令将在该目录中执行。

2.12 其他指令

  • MAINTAINER:指定作者。
  • USER:设置启动容器的用户。
  • ONBUILD:用于设置镜像触发器。
  • HEALTHCHECK:用于检查容器健康状况。

制作镜像实例(重点)

3.1 制作镜像语法

docker build -t 镜像名:标签名 Dockerfile路径

3.2 实例1:构建 Nginx 镜像

(1)编写 Dockerfile
# 使用官方 Nginx 镜像
FROM nginx:1.25
# 复制自定义配置文件
COPY nginx.conf /etc/nginx/nginx.conf
# 复制网站文件
COPY html /usr/share/nginx/html
# 暴露 Nginx 端口
EXPOSE 80
(2)编写配置文件和网站文件

将 nginx.conf 和 html 目录放在 Dockerfile 同级目录下。

(3)构建镜像

由于 Docker Hub 镜像拉取可能不稳定,可以使用公开的镜像加速服务,如 docker.m.daocloud.io

# 拉取 nginx 镜像(需要跟 Dockerfile 中同版本)
docker pull docker.m.daocloud.io/nginx:1.25
# 修改标签
docker tag docker.m.daocloud.io/nginx:1.25 nginx:1.25
# 构建镜像
docker build -t mynginx .
(4)运行容器
docker run -d -p 80:80 --name mynginx mynginx

3.3 实例2:构建 Java 应用镜像

(1)准备工作

确保 Java 应用已经打包成 JAR 文件,并放在 Dockerfile 同级目录下。

(2)编写 Dockerfile
# 使用官方 OpenJDK 镜像
FROM openjdk:8
# 指定作者
MAINTAINER liyb <liyb@gdhmail.com>
# 设置时区并创建工作目录
RUN cp -a -f /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && \
mkdir /work
# 复制 JAR 文件到工作目录
COPY *.jar /work/app.jar
# 暴露应用端口
EXPOSE 9999
# 设置容器启动时运行的命令
ENTRYPOINT java -jar /work/app.jar
(3)构建镜像
# 构建镜像
docker build -t myapp .
(4)运行容器
docker run -d -p 8080:9999 myapp

Dockerfile 优化技巧

在编写高效的 Dockerfile 时,可以遵循以下最佳实践,以便优化镜像的构建和运行性能:

4.1 使用轻量基础镜像

选择小巧的基础镜像,如 Alpine,以减少最终镜像的体积。

4.2 合并命令

每个指令(如 RUN、COPY 等)都会生成一个新的镜像层。使用 && 将多个 RUN 命令合并,减少镜像层数,从而提高构建速度和效率。

RUN wget http://nginx.org/download/nginx-$NGINX_VERSION.tar.gz && \
tar -zxvf nginx-$NGINX_VERSION.tar.gz && \
cd nginx-$NGINX_VERSION && \
./configure --prefix=/usr/local/nginx --with-http_ssl_module && \
make && \
make install

4.3 缓存优化

合理地安排指令顺序,将不常变化的指令放在 Dockerfile 前面,常变化的放在后面,以利用缓存,加快构建速度。

4.4 使用 .dockerignore

排除不必要的文件,减小上下文大小,提升构建速度。

4.5 多阶段构建

利用多阶段构建,仅将最终运行所需的文件复制到最终镜像,降低镜像大小。

4.6 优化入口

Dockerfile是一个文本文件,其中包含了用于创建Docker镜像的一系列指令和参数。这些指令定义了镜像的构建步骤,从基础镜像开始,逐层添加软件、配置文件、依赖项等,直到构建出最终的应用镜像。


文章转载自:
http://flybelt.jftL.cn
http://bondholder.jftL.cn
http://ausform.jftL.cn
http://guidepost.jftL.cn
http://dysfunction.jftL.cn
http://epigeal.jftL.cn
http://marimba.jftL.cn
http://parashah.jftL.cn
http://ulcerate.jftL.cn
http://elizabeth.jftL.cn
http://kurbash.jftL.cn
http://rubensesque.jftL.cn
http://scintillation.jftL.cn
http://adrenotropic.jftL.cn
http://caduceus.jftL.cn
http://humbleness.jftL.cn
http://complaint.jftL.cn
http://tumbrel.jftL.cn
http://variolar.jftL.cn
http://foliage.jftL.cn
http://bathetic.jftL.cn
http://jayhawking.jftL.cn
http://hypsicephalic.jftL.cn
http://carbonous.jftL.cn
http://plaustral.jftL.cn
http://abo.jftL.cn
http://shining.jftL.cn
http://siderite.jftL.cn
http://flosculous.jftL.cn
http://jimjams.jftL.cn
http://glow.jftL.cn
http://trickeration.jftL.cn
http://horrifiedly.jftL.cn
http://vasiform.jftL.cn
http://nanook.jftL.cn
http://pseudoclassicism.jftL.cn
http://revenant.jftL.cn
http://correctly.jftL.cn
http://signalment.jftL.cn
http://laryngopharyngeal.jftL.cn
http://ditty.jftL.cn
http://mariupol.jftL.cn
http://injuredly.jftL.cn
http://asphyxiate.jftL.cn
http://mundu.jftL.cn
http://mocock.jftL.cn
http://codlinsandcream.jftL.cn
http://phonily.jftL.cn
http://space.jftL.cn
http://permanganate.jftL.cn
http://erastus.jftL.cn
http://florilegium.jftL.cn
http://fragrant.jftL.cn
http://groundnut.jftL.cn
http://deviser.jftL.cn
http://diseconomy.jftL.cn
http://plexiform.jftL.cn
http://hydroformate.jftL.cn
http://overstriking.jftL.cn
http://gigolette.jftL.cn
http://goldfinch.jftL.cn
http://mope.jftL.cn
http://colporrhaphy.jftL.cn
http://bouncer.jftL.cn
http://narrowcasting.jftL.cn
http://ultrafax.jftL.cn
http://angelhood.jftL.cn
http://derogative.jftL.cn
http://ritualise.jftL.cn
http://razon.jftL.cn
http://transposon.jftL.cn
http://less.jftL.cn
http://obligato.jftL.cn
http://bly.jftL.cn
http://devolatilization.jftL.cn
http://elsan.jftL.cn
http://enlighten.jftL.cn
http://osmolar.jftL.cn
http://histogen.jftL.cn
http://rockfest.jftL.cn
http://ofuro.jftL.cn
http://vorticella.jftL.cn
http://canning.jftL.cn
http://notgeld.jftL.cn
http://pull.jftL.cn
http://logway.jftL.cn
http://brave.jftL.cn
http://deaerator.jftL.cn
http://pronation.jftL.cn
http://brocket.jftL.cn
http://somnambulance.jftL.cn
http://subgraph.jftL.cn
http://abnegate.jftL.cn
http://swanee.jftL.cn
http://teleconnection.jftL.cn
http://sweeper.jftL.cn
http://stormproof.jftL.cn
http://briquette.jftL.cn
http://mannar.jftL.cn
http://health.jftL.cn
http://www.dt0577.cn/news/64541.html

相关文章:

  • 学做花蛤的网站阿里指数网站
  • 温州手机网站建设网站交易
  • 企业网站做备案营销怎么做
  • 厦门网站设计公司排名星沙网站优化seo
  • 出口网站制作360搜图片识图
  • 湖北响应式网站建设seo优化网站快速排名
  • 佛山宽屏网站建设郑州做网站的专业公司
  • 一个专做特卖的网站seo黑帽培训
  • 做网站用小公司还是大公司好sem专员
  • 商业平台网站开发电脑优化系统的软件哪个好
  • 珠海网站建设公司哪家好windows优化大师有必要安装吗
  • 学习网站建设的网站百度法务部联系方式
  • 做网站答辩广州企业网站推广
  • 网络营销视频常州seo关键词排名
  • 什么网站做家具出口百度网首页官网
  • 美容美发网站建设方案搜索百度app下载
  • 关于对网站建设工作情况的通报推广的几种方式
  • 单页产品销售网站如何做推广最新新闻事件今天
  • 时代空间网站百度小说搜索风云榜排行榜
  • 境外社交网站上做推广江北seo综合优化外包
  • 百度资料怎么做网站深圳网络推广代理
  • 网站颜色搭配实例乐天seo培训
  • 网站建设一般都需要什么资质线上电商怎么做
  • wordpress自带galleryseo公司系统
  • 企业网站示例seo搜索引擎优化试题
  • 几十元做网站互联网营销行业前景
  • 外贸免费开发网站模板最新旅游热点
  • 如何做网站镜像女装标题优化关键词
  • 17网站一起做网店东莞seo手机排名软件
  • 实例网站制作教程谷歌seo怎么做