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

Dockerfile自定义容器

1、Dockerfile

Dockerfile 是用于构建 Docker 镜像的文本文件,其中包含一系列的指令和配置,用于定义镜像的构建过程。通过 Dockerfile,你可以定义镜像的基础操作系统、依赖、环境设置、应用程序等信息,从而实现可复制、自动化的镜像构建过程

2、dockerfile常用参数:

1.ARG:镜像层的环境变量
2.FROM:拉取基础镜像
3.COPY:拷贝文件
4.ADD:拷贝文件、URL、压缩文件等
5.EVN:镜像层和容器层参数
6.EXPOSE:暴露容器内部端口给外部使用
7.RUN:执行shell指令
8.CMD:构建完成时执行的指令

3、编写一个dockerfile 自定义一个nginx的容器

1、创建mynginxDockerfile并编写dockerfile

注意文件命名(如果命名Dockerfile,构建时是不需要制定名称的,docker会默认加载此名称的文件)

# Dockerfile
# docker build -t ngx-app .
# docker build -t ngx-app:1.0 .ARG IMAGE_BASE="nginx"
ARG IMAGE_TAG="1.21-alpine"FROM ${IMAGE_BASE}:${IMAGE_TAG}COPY ./default.conf /etc/nginx/conf.d/RUN cd /usr/share/nginx/html \&& echo "hello nginx" > a.txtEXPOSE 8081 8082

ARG IMAGE_BASE=“nginx” 和 ARG IMAGE_TAG=“1.21-alpine”:定义了两个构建参数,用于指定基础镜像的名称和标签。

FROM I M A G E B A S E : {IMAGE_BASE}: IMAGEBASE:{IMAGE_TAG}:使用 FROM 指令指定了基础镜像,${IMAGE_BASE} 和 ${IMAGE_TAG} 是在构建过程中根据构建参数动态替换的变量。

COPY ./default.conf /etc/nginx/conf.d/:使用 COPY 指令将主机上的 default.conf 文件复制到容器中的 /etc/nginx/conf.d/ 目录。

RUN cd /usr/share/nginx/html \ && echo “hello nginx” > a.txt:使用 RUN 指令在容器中执行一系列命令。首先,使用 cd /usr/share/nginx/html 命令切换到 /usr/share/nginx/html 目录。然后,使用 echo “hello nginx” > a.txt 命令将字符串 “hello nginx” 写入到名为 a.txt 的文件中。

EXPOSE 8081 8082:使用 EXPOSE 指令声明容器将监听的端
口号。在这个示例中,容器将监听 8081、8082 两个端口。

通过这些指令, Dockerfile 构建了一个基于 nginx:1.21-alpine 镜像的新镜像。它将 default.conf 文件复制到容器中的 /etc/nginx/conf.d/ 目录,并在容器中的 /usr/share/nginx/html 目录下创建了一个名为 a.txt 的文件。

2、在当前目录创建default.conf

touch default.confvi default.conf并将以下内容复制到文件中
server {listen 8081;server_name localhost;location / {root /usr/share/nginx/html;index index.html;}
}

3、构建并查看docker镜像

在这里插入图片描述

4、运行容器

在这里插入图片描述

5、在浏览器中访问 http://本机ip:8080 来查看 Nginx 的欢迎页面

在这里插入图片描述

6、进入容器中查看对应内容

查看容器id
查看容器id
进入容器,切换目录发现default.config已经存在,查看内容发现和./default.config是一致的
在这里插入图片描述
切换到如下目录,发现a.txt已经生成,查看内容hello nginx
在这里插入图片描述

7、退出并停止容器

在这里插入图片描述

http://www.lryc.cn/news/186296.html

相关文章:

  • (5)SpringMVC处理携带JSON格式(“key“:value)请求数据的Ajax请求
  • 【iOS】——仿写计算器
  • 公安机关警务vr综合实战模拟训练提高团队合作能力
  • MySQL-1(12000字详解)
  • voc数据集格式与yolo数据集格式的区别及相互转化
  • 超详细!Android Termux上如何安装MySQL,内网穿透实现公网远程访问
  • TSNE降维学习
  • 基于Python+Selenium的web自动化测试框架详解
  • C (1094) : DS双向链表—前驱后继
  • mp4视频太大怎么压缩变小?
  • 利用easy excel 实现文件导出
  • LongLoRA:超长上下文,大语言模型高效微调方法
  • 【漏洞复现】某 NVR 视频存储管理设备远程命令执行
  • 若依前端-应用路径发布和使用
  • Mojo 正式发布,Rust 能否与之匹敌?
  • opencv实现抠图,图像拼接,图像融合
  • 照片处理软件Lightroom Classic mac中文版功能介绍(Lrc2021)
  • asp.net高校留学生信息管理系统VS开发sqlserver数据库web结构c#编程Microsoft Visual Studio
  • C# - Opencv应用(1) 之VS下环境配置详解
  • rsync 远程同步实现快速、安全、高效的异地备份
  • 医学访问学者面试技巧
  • 【19】c++设计模式——>桥接模式
  • 网络安全:六种常见的网络攻击手段
  • 使用HbuilderX运行uniapp中小程序项目
  • 基于PHP的水果商城网站,mysql数据库,前台+后台,原生PHP,PHP study(小皮),完美运行,有一万字报告。
  • 【uniapp】自定义导航栏时,设置安全距离,适配不同机型
  • JAVA经典百题之数组逆序输出
  • vue run dev 配置nginx
  • Python实现RNN算法对MFCC特征的简单语音识别
  • 借助PLC-Recorder,汇川中型PLC(AM、AC系列,CODESYS平台)2ms高速采集的方法