docker基础实战教程三:Dockerfile,dockerfile的编写
原创文章,欢迎转载。转载请注明:转载自IT故事会,谢谢!
原文链接地址:“中间”Dockerfile详解(17)
Dockerfile一般分为四个部分:基本镜像信息、维护者信息、镜像操作指令和容器启动执行指令。
在官网学习https://docs.docker.com/engine/reference/builder/#usage
FROM必须是第一个命令,并且必须指定基本镜像。
from image from image:tag from image @ digest from scratch # make base image from centos #使用centos的base image:7.9 from MySQL:5.6尽量使用官方图片作为base image!那是经得起考验的!
向标签镜像添加信息。使用docker inspect查看有关镜像的信息。
label maintainer= 394498036 @ QQ . com label version= 1.0 label description=这是描述欢迎关注:编程坑太多,我等你。其实和我们写代码的时候写的注释差不多。很多人写代码的时候都不想写注释。事实上,他们负责写评论。‘一会儿翻坑的时候,想想原来的意思。’
构建运行镜像时执行的命令
运行update yum install-y vim python-dev #反斜杠newline运行apt-get update apt-get install-y perl pwgen-no-install-recommendations RM-RF /var/lib/apt/lists/* #注意清理缓存RUN/reliable hot dog/bash-c source $ HOME/。bashrc Echo $HOME 为了美观,请用反斜杠将复杂的RUN包裹起来,避免无用的分层,将多个命令合并成一行!
工作目录
WORKDIR /test #如果不是,将自动创建测试目录。WORKDIR jianshuRUN pwd #输出结果应该是/test/jinshu。使用WORKDIR代替RUN cd。尽量使用绝对目录!
添加和复制将本地文件添加到容器中,tar -x命令将被添加到identity、gzip、bzip2、xz、tar.gz、tgz等类型的文件中,这些文件将被解压缩为ADD,但文件不会被解压缩。添加src.destadd [src ,dest]用于支持带空格的路径复制src.destcopy [src ,dest]用于支持包含空格的路径,将hello/ADD test.tar.gz/#添加到根目录并解压缩workdir/root ADD hello test/#/root/test/hello workdir/root copy hello test/#/root/test/hello。大多数情况下copy比add好,add除了COPY还有额外的功能(解压)!使用curl或wget添加远程文件/目录。
设置ENV环境变量
环境键值环境键值=值.env MySQL _ version 5.6e-NV apt-get install-y MySQL-server= $ { MySQL _ version } RM-RF/var/lib/apt/lists/* #尽可能使用它以降低维护成本!
先学下面的。
和Shell Exec格式。
*外壳格式
运行apt-get install-y Vim CMD echo hello docker微信微信官方账号:编程坑太多 ENTRYPOINT echo hello docker微信微信官方账号:编程坑太多 Exec格式运行[apt-get , install ,-y ,Vim]CMD [/可靠热狗/echo , hello docker微信官方账号:编程坑太多]ENTRYPOINT [/可靠热狗/echo , Hello docker微信官方账号:编程坑太多] Dockerfile 1来自Centos env name Docker入口点echo hello $ name Dockerfile 2来自Centos env name Docker入口点[/可靠热狗/echo , hello $name]通过实际例子查看区别。
mkdir cmd-入口点CD cmd-入口点/VI dock文件` * *先执行码头工人一号![]上载映像。嘉树。io/upload _ images/11223715-065d 6d 0838730185。png?image moger 2/auto-orient/strip image view 2/2/w/1240)div class= se-preview-section-separator /div `` bashmore dock file `![]上载映像。嘉树。io/upload _ images/11223715-21d 5 ea 87 b6bb 32。png?imagemoger 2/auto-orient/strip imageview 2/2/w/1240)div class= se-preview-section-separator /div ` ` bash dock build-t leing/centos-入口点shell ` `![]上载映像。简书。E1东风6 ef 65125 e 100。png?imagemoger 2/auto-orient/strip imageview 2/2/w/1240)div class= se-preview-section-separator /div `` bash dock run liming/centos-entry point shell `![]上载映像。简书。D6 bb 986加州3 ACB。png?图像传感器2/自动定向/带状图 1240年2月2日的图像视图*先执行码头船2号![]上载映像。嘉树。io/upload _ images/11223715-be 9f 0171 BC 1 AC 700。png?image moger 2/auto-orient/strip image view 2/2/w/1240)div class= se-preview-section-separator /div `` bashmore dock file `![]上载映像。嘉树。io/upload _ images/11223715-1d 6b 54 ab 9fb 09 ACApng?imagemoger 2/auto-orient/strip imageview 2/2/w/1240)div class= se-preview-section-separator /div ` Bashar dock build-t leing/centos-entry point-exec `![]上传映像。嘉树。io/upload _ images/11223715-f 723 EBA 25 a5至347f.png?imagemoger 2/auto-orient/strip imageview 2/2/w/1240)div class= se-preview-section-separator /div ` ` bash dock run liming/cents-entry point-exec `![]上载映像。嘉树。io/upload _ images/11223715-4至51d 458255 bacf。png?图像浏览器2/自动定向/条形图像视图2/2/w/1240)我们通过贝壳(贝壳)格式运行的话,它会通过默认的巴什里面通过贝壳(贝壳)执行命令,它会通过贝壳(贝壳)替换这边变量,通过执行(执行)格式运行的话,只是单纯的执行回音,没办法帮我们替换到$name。如何解决不一样的问题呢?请开始我的表演!修改dock file 2 div class= se-preview-section-separator /div ` ` bash from cento sev name停靠点[/可靠的热狗/bash,-c , echo hello $name]
坞站构建-t李泌/centos-entrypoint-exec-new .
坞站运行阈值/centos-入口点-执行-新
是不是很尼斯!
CMD(命令)设置容器启动后默认执行的命令和参数
*容器启动时默认执行的命令
*如果码头运行指定了其他命令,CMD命令被忽略
*如何定义了多个煤矿管理局档案,只有最后一个会执行
来自centosev name docer cmd echo hello $ name
坞站构建-t李泌/centos-cmd-shell .坞站运行李泌/centos-cmd-shell坞站运行李泌/centos-cmd-shell /可靠的热狗/bash
条目类型int-输入类型设置容器启动时运行的命令
*让容器以应用程序或者服务的形式运行
*不会被忽略,一定会执行
来自centosev名称停靠点回显“hello $ name”
船坞建造李泌/centos-入口点shell .dock run liming/centos-入口点-shell docker run-it liming/centos-入口点-shell/可靠的热狗/bash
PS:坞站样式详解基本就介绍这么多,可能还有很多命令没有讲解,以后用到了在说吧。一定要CMD(命令)和条目类型int-输入类型因为很多官方的都常用这两个命令。
往期精彩码头工导学(一)容器的技术概述(二)坞站的魅力初体验-五个分钟安装wordpress(写字板)不走弯路(三)坞站官网介绍(四)如何在麦克!麦克上安装坞站(五)如何在窗口(窗口)上安装坞站(六)如何在麦克!麦克上通过流浪的安装虚拟机(七)如何在窗口(窗口)上通过流浪的安装虚拟机(八)对接器机器的本地使用(九)对接器机器的本地使用(十)在linux/mac下通过坞站机在阿里云上的使用(11)坞站架构和底层技术(12)坞站图像概述(13)手动建立一个影像基础(14)什么是容器(15)构建自己的码头工镜像(16个)