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会默认加载此名称的文件)

bash 复制代码
# 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.txt

EXPOSE 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

bash 复制代码
touch default.conf

vi 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

进入容器,切换目录发现default.config已经存在,查看内容发现和./default.config是一致的

切换到如下目录,发现a.txt已经生成,查看内容hello nginx

7、退出并停止容器

相关推荐
张忠琳8 分钟前
【kubernetes v1.21】(一)Kubernetes 总览架构深度分析
云原生·架构·kubernetes
香气袭人知骤暖10 分钟前
PG数据库 Docker 容器自动备份方案
数据库·docker·容器
AI服务老曹27 分钟前
解耦异构算力:基于 Docker 与 GB28181/RTSP 的边缘计算 AI 视频管理平台架构设计与源码交付实践
人工智能·docker·边缘计算
weixin_4684668539 分钟前
Prometheus监控服务部署与实战指南
服务器·后端·python·docker·自动化·prometheus
IT策士1 小时前
第 20 篇 搭建 Kubernetes 实验环境:Minikube 与 kubectl
云原生·容器·kubernetes
ai产品老杨2 小时前
基于 Docker 容器化与异构计算的智能安防架构:解耦 GB28181/RTSP 协议与多芯片适配,源码交付如何助力集成商节省 95% 开发成本?
docker·容器·架构
Plastic garden3 小时前
Docker(2)网络模式
运维·docker·容器
Elastic 中国社区官方博客3 小时前
Kibana 仪表板即代码:在 Elastic 9.4 中用于 Kibana 仪表板的 GitOps、漂移检测与 Terraform
大数据·人工智能·elasticsearch·搜索引擎·云原生·kibana·terraform
小哈里4 小时前
【K8S】云原生时代的GitOps最佳实践 —— ArgoCD
云原生·kubernetes·云计算·argocd·基础设施