Docker:Dockfile制作容器详细介绍

本文介绍了如何使用Dockerfile来创建自定义镜像,包括Dockerfile的基本语法、常用指令及其应用,如FROM、LABEL、COPY、ADD、WORKDIR、VOLUME、EXPOSE、ENV、RUN、CMD、ENTRYPOINT等,以及它们在构建Docker镜像过程中的作用。通过Dockerfile,可以更灵活地配置和管理容器。
摘要由CSDN通过智能技术生成

目录

1、基于镜像【修改容器:  自定义容器】

2、基于Dockerfile

Dockerfile的语法格式

Dockerfile 指令和环境变量的应用

FROM 指令

MAINTANIER(depreacted)已经替换为LABEL

LABEL

COPY

ADD

WORKDIR

VOLUAM

EXPOSE

ENV

RUN

CMD

ENTRYPOINT

USER

HEALIHCHECK

SHELL

STOPSIGNAL [默认 15]

ARG [参数]

ONBUILD


有些镜像不能满足我们的生产环境的需要就需要自己来制作镜像;制作镜像有两种方式:

1、基于镜像【修改容器:  自定义容器】

缺点所有的配置都是写死的不能灵活配置【假设我们需要三个镜像:测试,开发,线上配置都是不相同,实现起来配置是很麻烦的,都需要重新制作】;

事实上docker在配置文件山解决方案是:

nginx这个镜像启动为容器后只做一件事情,配置一个虚拟主机,提供一个虚拟Server,它所服务主机名、家目录、监听的端口,文档根目录,在什么时候?由于配置的环境影响可能可不一样,当时它的配置文件格式是相同的,那么我们就可以走把配置文件生成类似于模板一样放在特定地方

为了文件生成起来更加简单我们对内部增加接受变量,变量替换

server.conf   /etc/nginx/conf.d/
{
        server_name $NGX_SERVER_NAME;
        lister $NGX_IP:$NGINX_PORT;
        root $DOC_ROOT;

}

 在容器内部的主进程启动之前先启动别的程序,这个程序根据镜像中的文件,以及镜像启动时向容器传递的环境变量【参数】,这个程序把用户传进来的环境变量【参数】进行替换并保存在/etc/nginx/conf.d/ 下,保存完了由这个程序在启动主进程【由一个程序启动另一个程序,并替换当前进程:exec】;这种过程从某种意义来说更加复杂了,因为配置过程都是看不见的

 

 LInux的哲学思想用文本文件保存程序配置文件,用文本编辑器就可以做到配置所有的容器;在容器化的时候这种已经被颠覆了,不建议该配置文件,而是通过环境变量来配置文件

2、基于Dockerfile

Dockerfile是什么?其实是用来构建Docker镜像的源码【仅仅是一些文本指令】,调用一些命令生成一个image,所以从这个角度来说dockerfile就是一个纯文本文件里面包含了一些指令而已,在制作dockerfile中规定的所支持的命令【一二十个指令】堆叠起来

Dockerfile的语法格式

#:开头 注释
指令(大写:不区分大小写,但建议大写)+参数 一行一个指令
顺序执行指令,但是整个Dockerfile文件第一个非注释行,必须是From基于某个已存在的基础镜像来做

1、Dockerfile制作时:必须在某一个特定的目录,Dockerfile文件首字母必须大写;必须有Dockerflile文件;要打包镜像的文件打包好后必须放在该目录下;Dockrfile还支持隐藏文件【.dockeringore】在该文件中路径中,打包过程中都不包含该路径下的文件;

Dockerfile 指令和环境变量的应用

制作dockerfile文件命令是docker build;docker build制作的基础是基于底层镜像所提供给我们的命令

1、引用环境变量:$variable_name  或${variable_name}

2、引用环境变量:${variable: - word}:如果这个变量不存在或空,就引用是用word这个变量的值

3、引用环境变量:${variable: + word}:如果变量存在显示word,不存在显示空

FROM 指令

1、FROM指令是最重的一个且必须为Dockerfile文件开篇的第一个非注释行,用于为印象文件构建过程指定基准镜像,后续的指令运行于此基准镜像所提供的运行环境

2、事件中,基准镜像可以是任何可用镜像文件,默认情况下,docker build会在docker 主机上查找指定的镜像文件,在其不存在时,则会从Dockers Hub Registry上拉取所需的镜像文件【如果找不到指定的镜像文件,docker build会返回一个错误信息】

语法(Syntax)

  • FROM <repository> [:<tag>] 或 FROM <repository>@
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值