云计算
Docker中制作镜像一共有两个方法:
创新互联服务项目包括西湖网站建设、西湖网站制作、西湖网页制作以及西湖网络营销策划等。多年来,我们专注于互联网行业,利用自身积累的技术优势、行业经验、深度合作伙伴关系等,向广大中小型企业、政府机构等提供互联网行业的解决方案,西湖网站推广取得了明显的社会效益与经济效益。目前,我们服务的客户以成都为中心已经辐射到西湖省份的部分城市,未来相信会继续扩大服务区域并继续获得客户的支持与信任!1. 基于容器制作镜像:
2. 基于Dockerfile制作镜像;
docker build …
Dockerfile的制作步骤:
1.创建一个目录;
2.在目录中创建一个首字母大写的文件,供docker build识别;
3.因为Dockerfile的执行环境在创建的目录中,所以可以创建相对应的文件,供dockerfile使用;
ex:
[root@master~]#lsdocimage Dockerfileindex.html [root@master~]#catdocimage/Dockerfile FROMbusybox:latest LABELmaintainer="hevttc" ENVDOC_ROOT="/tmp/"\\ VOLUME_ROOT="/data/mydata"\\ ARGU="/usr/sbin/" COPYindex.html/tmp/ VOLUME${VOLUME_ROOT} RUNifconfig-a&&\\ cat${DOC_ROOT}index.html
Dockerfile书写格式:
Dockerfile Format
“#”开头的行是注释行(可以多行,任意位置);
INSTRUCTION arguments
Docker是顺序执行Dockerfile中的内容,注意书写顺序;
Dockerfile中几个重要的指令:
1.FROM (指定基准镜像)
2.LABEL(写入当前Dockerfile的制作者信息);
3.COPY(将宿主机的文件拷贝至镜像中);
4.ADD(类似于COPY指令,支持TAR文件和URL路径);
5.WORKDIR(用于为Dockerfile中所有的RUN, CMD, ENTRYPOINT, COPY和ADD指定设定工作目录;);
6.VOLUME(用于在image中创建一个挂载点目录,可以用于在Docker Host上挂载卷);
个人并不建议使用:这是Docker daemon创建托管卷,并不是绑定挂载;
7.EXPOSE(为容器打开要监听的端口,实现与外部的通信);
EXPOSE
8.ENV(为镜像定义环境变量,可以被其他指令调用,build_time和run_time都可被使用);
调用格式:
$variable_name或${variable_name}
9.ARG (在创建镜像是build_time使用的变量,一般用ARG写版本号和作者);
10.RUN(用于指定Docker build过程中运行的程序);
11.CMD(类似于RUN命令,在run_time执行);
12.ENTRYPOINT(类似于CMD指令)
[root@master~]#catdocimage1/entrypoint.sh #!/bin/sh exec$@ [root@master~]#catdocimage1/Dockerfile FROMnginx:1.14-alpine COPYentrypoint.sh/bin/ CMD["/usr/local/nginx","-g","daemonoff;"] ENTRYPOINT["/bin/entrypoint.sh"] [root@master~]#lldocimage1/ 总用量8 -rw-r--r--1rootroot12911月120:42Dockerfile -rwxr-xr-x1rootroot1911月120:16entrypoint.sh
命令执行图
创建一个Dockerfile;
[root@www~]#mkdirdocimage [root@www~]#vimdocimage/Dockerfile [root@www~]# [root@www~]#vimdocimage/test.txt [root@www~]#catdocimage/Dockerfile FROMnginx:1.14-alpine LABELmaintainer="liujingyu" ENVDOC_ROOT="/tmp"\\ 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:v0.2 SendingbuildcontexttoDockerdaemon3.072kB Step1/7:FROMnginx:1.14-alpine --->77bae8d00654 Step2/7:LABELmaintainer="liujingyu" --->Usingcache --->a012ac4c6f51 Step3/7:ENVDOC_ROOT="/tmp"VOLUME_ROOT=/data/mydata --->Usingcache --->ee6ed363bfde Step4/7:COPYtest.txt${DOC_ROOT} --->Usingcache --->a416671fde2a Step5/7:VOLUME${VOLUME_ROOT} --->Usingcache --->84bf38b22301 Step6/7:RUNecho123>${DOC_ROOT}/test.txt --->Usingcache --->756cd9857096 Step7/7:CMDcat${DOC_ROOT}/test.txt --->Runningina2f99fcc5fba Removingintermediatecontainera2f99fcc5fba --->dac468a636e0 Successfullybuiltdac468a636e0 Successfullytaggedljymyy/nginx:v0.2 [root@www~]#dockerimagels REPOSITORYTAGIMAGEIDCREATEDSIZE ljymyy/nginxv0.2dac468a636e02minutesago17.7MB
运行此镜像:
[root@www~]#dockercontainerrun--rm--namengx1ljymyy/nginx:v0.2 123