千家信息网

Docker容器的镜像文件Dockerfile的介绍

发表于:2024-09-21 作者:千家信息网编辑
千家信息网最后更新 2024年09月21日,这篇文章为大家带来有关Docker容器的镜像文件Dockerfile的详细介绍。大部分知识点都是大家经常用到的,为此分享给大家做个参考。一起跟随小编过来看看吧。dockerfile 指令选项:1、FR
千家信息网最后更新 2024年09月21日Docker容器的镜像文件Dockerfile的介绍
  • 这篇文章为大家带来有关Docker容器的镜像文件Dockerfile的详细介绍。大部分知识点都是大家经常用到的,为此分享给大家做个参考。一起跟随小编过来看看吧。

dockerfile 指令选项:
1、FROM
用法: FROM
1)from指定构建镜像的基础源镜像,如果本地没有指定这个镜像,则会自动从docker公共仓库中pull下来
2)from必须是dockerfile中非注释行的第一个命令,也就是说写一个一个dockerfile必须从(除了注释以外)from语句开始
3)from可以在一个dockerfile中出现多次,如果有需求在一个dockerfile中创建多个镜像
4)如果from语句没有指定镜像的标签,则默认就使用latest的标签

2、MAINTAINER
用法: MAINTAINER
指定创建镜像的用户

3、RUN
RUN:两种使用方式
1) RUN
2) RUN "executable","param1","param2"
每条RUN指令是创建镜像是执行的命令,并提交为新的镜像,后续的RUN都在之前RUN提交后的镜像为基础,镜像是分层的,可以通过一个奖项的任何一个历史提交点来创建,类似远吗的版本控制。
exec方式会被解析为一个JSON数组,所以必须使用双引导而不是单引导。exec方式不会调用一个命令shell所以也就不会集成相应的变量
如:RUN [ "echo","$HOME" ] 这种方式是不会达到输出HOME变量的
正确的方式应该是: RUN [ "sh","-c","echo","$HOME" ]
RUN产生的缓存在一次构建的时候是不会失效的,会被重用,可以使用--no-cache选项,即docker build --no-cache ,如此便不会缓存

4、CMD
CMD 有三种使用方式:
1)CMD "executable","param1","param2"
2)CMD "param1","param2"
3)CMD "commamd","param1","param2"
CMD就是容器启动时执行的命令,如果用户启动容器时指定了运行的命令,则会覆盖掉CMD指定的命令。
注:CMD指令在dockerfile中只能使用一次,如果有多个,则只有最后一个会生效
CMD的目的是为了在启动容器时提供一个默认的命令执行选项。如果用户启动容器时指定了运行的命令,则会覆盖掉CMD指定的命令
CMD会在启动容器的时候执行,build时不执行,而RUN只是在构建的时候执行,后续镜像构建完成后启动容器就与RUN无关了

5、EXPOSE
用法:EXPOSE [...]
告诉docker服务端容器对外映射的本地端口,需要在docker run 的时候使用-p或者-P选项生效

6、ENV
ENV #这样设置只能设置一个变量
ENV = ..... #这样允许写多个变量
例子:
ENV myname="john" myDOg=rex\ the\ dog\
mycat=fluffy
相当于
ENV myName John
ENV myDog Rex The Dog
ENV myCat fluffy

7、ADD
用法:ADD <源地址> <目标地址>
ADD复制本地主机文件、目录或者远程文件URLS 添加到容器指定的路径中去。
支持通过Go的正则模糊匹配
例:
ADD hom* /mydir #以hom开头的所有文件拷贝到容器中的/mydir
ADD hom?.txt /mydir #以hom开头.txt结尾的所有文件拷贝到容器中的/mydir

8、COPY
用法:COPY <源地址> <目标地址>
copy复制新文件到容器中去,并且添加到容器指定的路径中,用法和ADD相同,唯一不同的是不能指定远程配置文件URLS

9、ENTRYPOINT
用法:
ENTRYPOINT "executable","param1","param2"
ENTRYPOINT command param1 param2(shell form)
配置容器启动后执行的命令,并且不可被docker run提供的参数覆盖,而CMD是可以被覆盖的。如果覆盖则可以使用docker run --entrypoint选项
每个dockerfile中只能有一个 ENTRYPOINT,当指定多个时,只有最后一个生效

Exec form ENTRYPOINT 例子:
通过 ENTRYPOINT使用exec form方式设置稳定的默认命令和选项,而使用CMD添加默认之外经常被改动的选项。
FROM ubuntu
ENTRYPOINT ["top", "-b"]
CMD ["-c"]

通过 Dockerfile 使用ENTRYPOINT展示前台运行 Apache 服务
FROM debian:stable
RUN yum update && yum install httpd -y
EXPOSE 80 443
VOLUME ["/var/www/html", "/var/log/apache2", "/etc/apache2"]
ENTRYPOINT ["/usr/sbin/apache2ctl", "-D", "FOREGROUND"]

shell form ENTRYPOINT 例子:
这种方式会在/bin/sh -c 中执行,会忽略任何CMD或者docker run命令选项,为了确保docker stop能够停止长时间运行ENTRYPOINT的容器,确保执行的时间使用exec选项

10、VOLUME
用法:VOLUME ["/data"]
创建一个可以从本地主机或其他容器的挂载点

11、USER
使用哪个用户跑container
例:
ENTRYPOINT ["memcached"]
USER daemon

12、WORKDIR
相当于CD命令

13、ONBUILD
ONBUILD 指令的命令在构建镜像时不执行,而是在他的子镜像中执行

看完上述内容,你们对Docker容器的镜像文件Dockerfile有进一步的了解吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注行业资讯频道,感谢各位的阅读。

容器 命令 镜像 文件 方式 变量 多个 指令 时候 用户 运行 例子 主机 内容 只有 基础 开头 拷贝 更多 标签 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 软件数据库异常会自己恢复吗 长沙企业软件开发报价 政府采购软件开发价格 网页数据库查询系统 网络安全宣传专栏 淘宝上出售的腾讯云服务器靠谱吗 电力组态软件开发编程语言 数据库导入导入命令行 大庆市网络安全检查 内江网络安全宣传 数据库技术mysql的优势 美橙服务器特价 数据库管理维护软件 四川绵阳国家网络安全宣传周启动 山西学校触摸屏软件开发公司 呼和浩特交友软件开发 湖州智诚网络技术有限公司电话 华为流媒体服务器c6s机型 关于网络安全的四格漫画 北京市ipfs服务器云主机 屏幕共享软件开发市场需求大 黑龙江新成立网络安全保卫局 华邻互联网科技 宁波市网络安全台式感知平台 数据库建立通讯录流程 2017网络安全年会主题 山东大专有网络技术的学校 青海网络技术开发报价 网络安全应急响应机制论文 新乡市都都网络技术
0