云计算
在docker中创建镜像有两种方法。
1 .基于容器创建镜像:
文档提交…
基于文档文件创建镜像
文档构建…
创建文档文件的步骤:
1 .创建目录
在目录中创建首字母大写的文件,以便docker build可以识别
3.Dockerfile的运行环境位于创建的目录中,可以创建相应的文件并在dockerfile中使用;
ex :
[root@master~]#lsdocimage
Dockerfileindex.html
[ root @ master~] # catdocimage/docker file
FROMbusybox:latest
标签主=& amp; #039; hevttcljy@163.com&; #039;
ENVDOC_ROOT=&; #039; /tmp/&; #039; \\\\&; quot;
VOLUME_ROOT=&; #039; /data/mydata&; #039; \\\\&; quot;
ARGU=&; #039; /usr/sbin/&; #039;
COPYindex.html/tmp/
VOLUME${VOLUME_ROOT}
RUNifconfig-a\\\\
cat${DOC_ROOT}index.html
文档文件写入格式:
文档文件格式
“#”的第一行是注释行(可以是多行,可以是任意位置);
INSTRUCTION arguments
与命令对应参数、推荐命令可以是大写,参数可以是小写,默认的大小写都可以;
可以用一行命令完成,尽量不用多行命令;
第一行可执行指令必须是FROM指令;
文档生成器按顺序执行文档文件的内容,注意书写顺序
文档文件的几个重要命令:
1 .从(指定基准镜像) )。
来自资料档案库|:tag或
FROM repository@digest
资料档案库:指定base image的名称;
标签:基本图像的标签。 (可选)如果省略,则默认为latest;
2 .标签(写入当前文档文件的作者信息);
labelkey=value key=value key=value…
3 .复制(将宿主机上的文件复制到镜像);
COPY src … dest或COPY [&; #039; src&; #039;… &; #039; dest&; #039; ]
src :支持使用要复制的源文件或目录、通配符;
dst )目标路径,即要创建的image的文件系统路径; dest建议使用绝对路径。 否则,COPY规范将WORKDIR作为开始路径。
注:如果路径中有空格,通常使用第二种格式。
4.add (与copy命令类似,支持TAR文件和URL路径);
ADD src … dest或ADD [&; #039; src&; #039;… &; #039; dest&; #039; ]
注意:
src为URL且dest为&; #039; /&; #039; 如果未以结尾,则src指定的文件将被下载并直接创建为dest。 dest为&; #039; /&; #039; 如果以结尾,则下载由文件名URL指定的文件,并删除/文件名称;
如果src是本地系统上的压缩tar文件,则为&; #039; tar -x&; #039; 它将展开到一个像命令一样工作的目录中。 但是,通过URL获取的tar文件不会自动展开。
如果有多个src,或者间接或直接使用通配符,则dest为&; #039; /&; #039; 它必须是以结尾的目录路径。 dest为&; #039; /&; #039; 否则,它将被视为普通文件,src内容将直接写入dest;
5.workdir (用于指定docker文件中所有RUN、CMD、ENTRYPOINT、COPY和ADD的配置工作目录; );
工作直接路径
WORKDIR命令在Dockerfile文件中可能出现多次,其路径可以是相对路径,但为上一个WORKDIR命令指定的路径。
WORKDIR还可以调用具有ENV指定定义的变量;
6.volume (可用于在image上创建装入点目录,并在Docker Host上装入卷);
VOLUME mountpoint或VOLUME [&; #039; mountpoint&; #039; ]
我个人不推荐。 这是Docker daemon创建管理卷,而不是绑定装载。
7.EXPOSE (为容器打开侦听端口并实现与外部的通信);
expose port [/protocol ] port [/protocol ] port [/protocol ]…
protocol用于指定传输层协议,可以是TCP或UDP,缺省值为TCP。
8.ENV (为镜像定义环境变量,可以在其他命令中调用,build_time和run_time均可用);
ENV key value或ENV key=value…
调用格式:
$variable_name或${variable_name}
9.ARG ( build _ time用于创建镜像的变量,版本号和作者一般用arg编写);
ARG name[=default value]
10.run (用于指定在docker build中运行的程序);
RUN command或
RUN [&; #039; excutable&; #039;&; #039; param1&; #039;&; #039; param2&; #039;…](json数组)
11.cmd (像run命令一样,在run_time中执行);
CMD command或
CMD [&; #039; excutable&; #039;&; #039; param1&; #039;&; #039; param2&; #039;…]或
CMD [&; #039; param1&; #039;&; #039; param2&; #039;…) ) ) ) )。
12 .进入点(类似于cmd指令) ) ) )。
进入点命令
进入点[ & amp; #039; excutable&; #039;&; #039; param1&; #039;&; #039; param2&; #039;…]
[ root @ master~] # catdocimage1/entry point.sh
#! /bin/sh
exec$@
[ root @ master~] # catdocimage1/docker file
FROMnginx:1.14-alpine
COPYentrypoint.sh/bin/
CMD[&; #039; /usr/local/nginx&; #039;&; #039; -g&; #039;&; #039; 关闭日期; &; #039; ]
进入点[ & amp; #039; /bin/entrypoint.sh&; #039; ]
[root@master~]#lldocimage1/
总使用量8
-rw-r----r----1rootroot12911月120:42Dockerfile
-rwxr-xr-x1rootroot1911月120日: 16entrypoint.sh
命令执行映射
创建文档文件;
[root@www~]#mkdirdocimage
[ root @ www~] # vimdocimage/docker文件
[root@www~~]#
[ root @ www~] # vimdocimage/test.txt
[ root @ www~] # catdocimage/docker file
FROMnginx:1.14-alpine
标签主=& amp; #039; liujingyuljy_153@163.com&; #039;
ENVDOC_ROOT=&; #039; /tmp&; #039; \\\\&; quot;
VOLUME_ROOT=/data/mydata
COPYtest.txt${DOC_ROOT}
VOLUME${VOLUME_ROOT}
RUNecho123${DOC_ROOT}/test.txt
CMDcat${DOC_ROOT}/test.txt
[root@www~~]#
[ root @ www~] # catdocimage/test.txt
THISisDockerTEST;
在Dockerfile中创建镜像:
[ root @ www~] # dockerbuilddocimage/- tljymyy/nginx:v 0.2
sendingbuildcontexttodockerdaemon 3.072 kb
Step1/7:FROMnginx:1.14-alpine
---77bae8d00654
step2/7:标签主=& amp; #039; liujingyuljy_153@163.com&; #039;
---Usingcache
---a012ac4c6f51
step3/7:envdoc_root=&; #039; /tmp&; #039; volume_root=/data/mydata
---Usingcache
---ee6ed363bfde
step4/7: copy test.txt $ { doc _ root }
---Usingcache
---a416671fde2a
Step5/7:VOLUME${VOLUME_ROOT}
---Usingcache
---84bf38b22301
step6/7: run echo 123 $ { doc _ root }/test.txt
---Usingcache
---756cd9857096
step7/7: cmd cat $ { doc _ root }/test.txt
---Runningina2f99fcc5fba
removingintermediatecontainera 2f 99 fc C5 FBA
---dac468a636e0
Successfullybuiltdac468a636e0
successfullytaggedljymyy/nginx:v 0.2
[root@www~]#dockerimagels
repositorytagimageidcreatedsize
ljymyy/nginxv 0.2 DAC 468 a 636 e 02 minutes ago 17.7 MB
运行此镜像:
[ root @ www~~ ] # dockercontainerrun---RM---name ngx1ljymyy/nginx:v 0.2
123
详情请访问云服务器、域名注册、虚拟主机的问题,请访问西部数码代理商官方网站: www.chenqinet.cn