首页 > 其他分享 >Dockerfile构建镜像参数详解

Dockerfile构建镜像参数详解

时间:2022-10-29 21:58:25浏览次数:47  
标签:CMD apps nginx 详解 ENTRYPOINT 镜像 docker Dockerfile

Dockerfile简介

DockerFile是一个可以被Docker程序解释的文本文件,其中由指定的命令组成,在构建镜像的过程中,Docker程序会读取DockerFile文件内容并生成一个临时容器、然后在临时容器中执行DockerFile的指令,当执行完所有的指令后再把临时容器提交为一个Docker镜像,这样就完成的一个镜像的构建,基于DockerFile构建镜像便于后期对镜像的内容进行调整,因此在企业中有了提前编写好的各种各样DockerFile文件就可以快速构建出不同的业务镜像,而当后期某个镜像有额外的需求时,只要在之前的DockerFile添加或者修改相应的内容、即可重新生成新的Docke镜像然后部署在业务容器环境中(docker、docker-compsoe、swarm、kubernetes、openshift等)。

Dockerfile 指令

FROM centos:7.9.2009      #在整个dockfile文件中除了注释之外的第一行,就是FROM 。FROM 指令指定当前镜像作为父镜像(base image)   ARG  申明创建过程中使用的变量 ARG tag=latest   ADD [--chown=<user>:<group>] <src>... <dest>     #用于添加宿主机本地的文件、目录、压缩等资源到镜像里面去,会自动解压tar.gz格式的压缩包,但不会自动解压zip包 例:ADD nginx-1.22.1.tar.gz /usr/local/src/   将nginx-1.22.1.tar.gz 加入到  /usr/local/src/    LABEL “key”=“value”   #设置镜像的属性标签 COPY COPY [--chown=<user>:<group>] <src>... <dest>    #用于添加宿主机本地的文件、目录、压缩等资源到镜像里面去,不会解压任何压缩包   ENV MY_NAME="John Doe"   #设置容器环境变量 例:ENV mysql_user=user1   USER <user>[:<group>] or USER <UID>[:<GID>]   #指定运行操作的用户 例:USER user   RUN yum install vim unzip -y && cd /etc/nginx   #执行shell命令,但是一定要以非交互式的方式执行   VOLUME ["/data/data1","/data/data2"]    #定义容器里volume卷目录   WORKDIR /data/data1   #用于定义当前工作目录   EXPOSE <port> [<port>/<protocol>...]   #声明要把容器的某些端口映射到宿主机 CMD CMD有以上三种方式定义容器启动时所默认执行的命令或脚本: CMD ["executable","param1","param2"] (exec form, this is the preferred form) #推荐的可执行程序方式 CMD ["param1","param2"] (as default parameters to ENTRYPOINT) #作为ENTRYPOINT默认参数 CMD command param1 param2 (shell form) #基于shell命令的   ENTRYPOINT   #也可以用于定义容器在启动时候默认执行的命令或者脚本,如果是和CMD命令混合使用的时候,会将CMD的命令当做参数传递给ENTRYPOINT后面的脚本,可以在脚本中对参数做判断并相应的容器初始化操作。 案例1: ENTRYPOINT ["top", "-b"] CMD ["-c"] 等于如下一行: ENTRYPOINT ["top", "-b", "-c"] 案例2: ENTRYPOINT ["docker-entrypoint.sh"] #定义一个入口点脚本,并传递mysqld 参数 CMD ["mysqld"] 等于如下一行: ENTRYPOINT ["docker-entrypoint.sh","mysqld"] 使用总结: ENTRYPOINT(脚本) + CMD(当做参数传递给ENTRYPOINT)  

Dockerfile 构建nginx镜像:

vim dockerfile

FROM ubuntu:22.04
MAINTAINER "nuo 942933128@qq.com"


#ADD sources.list /etc/apt/sources.list

RUN apt update && apt install -y iproute2 ntpdate tcpdump telnet traceroute nfs-kernel-server nfs-common lrzsz tree openssl libssl-dev libpcre3 libpcre3-dev zlib1g-dev ntpdate tcpdump telnet traceroute gcc openssh-server lrzsz tree openssl libssl-dev libpcre3 libpcre3-dev zlib1g-dev ntpdate tcpdump telnet traceroute iotop unzip zip make

ADD nginx-1.22.1.tar.gz /usr/local/src/
RUN cd /usr/local/src/nginx-1.22.1 && ./configure --prefix=/apps/nginx && make && make install && ln -sv /apps/nginx/sbin/nginx /usr/bin
RUN groupadd -g 2088 nginx && useradd -g nginx -s /usr/sbin/nologin -u 2088 nginx && chown -R nginx.nginx /apps/nginx
ADD nginx.conf /apps/nginx/conf/
ADD frontend.tar.gz /apps/nginx/html/

EXPOSE 80 443
#ENTRYPOINT ["nginx"]
#CMD ["/apps/nginx/sbin/nginx","-g","daemon off;"] 

#ENTRYPOINT ["/apps/nginx/sbin/nginx","-g","daemon off;"]

#ENTRYPOINT ["/apps/nginx/sbin/nginx"]

#CMD ["-g","daemon off;"]

COPY docker-entrypoint.sh /docker-entrypoint.sh
RUN chmod a+x /docker-entrypoint.sh
ENTRYPOINT ["/docker-entrypoint.sh"]

  构建:docker build -t mynginx:v1 .

 

 

镜像的分层构建 1.系统基础镜像构建  

docker build -t ubuntu.22.04.base:v1 .

 

2.Nginx基础镜像构建

docker build -t mynginx:v1 .

3. Nginx业务镜像构建

 docker build -t myNginx_server:v1 .

 

 

标签:CMD,apps,nginx,详解,ENTRYPOINT,镜像,docker,Dockerfile
From: https://www.cnblogs.com/gengxiaonuo/p/16834129.html

相关文章

  • Barplot和boxplot作图详解——R语言
    当数据以简单的可视化的形式呈现时,数据便更具有意义并且更容易理解,因为人眼很难从原始数据中得出重要的信息。因此,数据可视化成为了解读数据最重要的方式之一。条形图和箱......
  • Java中ServletContextListener监听器详解
    转载于http://www.51gjie.com/javaweb/875.htmlJava中ServletContextListener监听器详解ServletContextListener如果在web.xml中配置了这个监听器,那么启动容器时,就会默认......
  • Plot函数用法详解——R语言
    plot是R中的基本画图工具,直接plot(x),x为一个数据集,就能画出图,soeasy!但是细节往往制胜的关键,所以就详细来看看plot的所有可设置参数及参数设置方法。R语言的基础绘图系统主......
  • ubuntu更换pip镜像源
    sudomkdir~/.pip&&cd~/.pip&&sudotouchpip.confsudovimpip.conf然后写入如下配置:[global]index-url=https://pypi.tuna.tsinghua.edu.cn/simple[inst......
  • 华为ME60/Eudemon8000E-X8镜像配置
    应用场景描述:        把核心交换机(BAS)与出口网关之间的所有流量全部镜像给安全态势感知设备,对所有进出的数据进行分析。思路:1、设置solt板卡观察序号2、配置镜像端......
  • python中for in的用法详解
    forin说明:也是循环结构的一种,经常用于遍历字符串、列表,元组,字典等格式:forxiny:循环体执行流程:x依次表示y中的一个元素,遍历完所有元素循环结束。例1:遍历字符串s='......
  • Emmet 使用详解
    title:Emmet语法使用详解date:2022-5-112:21:13index_img:img/post-img/html.jpgtags:[HTML,VScode]categories:软件配置Emmet使用详解初始化!,html:5......
  • 详解决策树-泰坦尼克号幸存者预测【菜菜的sklearn课堂笔记】
    视频作者:菜菜TsaiTsai链接:【技术干货】菜菜的机器学习sklearn【全85集】Python进阶_哔哩哔哩_bilibiliimportpandasaspdfromsklearn.treeimportDecisionTreeClas......
  • k8s查看pod镜像
    一、心里的疑问k8s创建了pod,pod拉取了nginx等镜像,然后使用nerdctlimages查看到的都是平面管理相关的镜像,那容器里下载的镜像又再哪里可以看见呢,当时这个有这个疑问,然后......
  • JavaScript--详解&&和--
    一、&&和||的简单介绍1、&&(逻辑与)逻辑与操作符由两个和号(&&)表示。2、||(逻辑或)逻辑或操作符由两个管道符(||)表示。二、深入理解&&和||1、用法&&和||运算符的返回值......