13、docker-dockerfile-自制镜像
dockerfile是用来构建docker镜像的文件!基于命令参数脚本
实现:
·编写一个dockerfile文件
·docker build 构成一个镜像文件
·docker run 运行镜像
·docker push 发布镜像(可以发布到DockerHub、阿里云镜像仓库)
============================================DockerFile构建过程=======================================
基础知识:
·每个保留关键字(指令)都是大写字母
·执行从上到下
· #表示注释
·每一个指令都会创建一个新的镜像层,并提交
·dockerfile是面向开发的,如果要发布项目就需要左镜像,就要编写dockerfile文件
DockerFile:构建文件,定义了一切步骤,源代码
DockerImages:通过DockerFile构建文件生成的镜像,最终发布产品
Docker容器:容器就是镜像运行起来的提供的服务器
=====================================================
DockerFile的指令
·FROM #指定基础镜像,一切从这里开始
·MAINTAINER #镜像是谁写的:姓名+邮箱
·RUN #镜像构建的时候需要运行的命令、再命令前面加上RUN即可
·ADD #添加内容(如tomcat的压缩包),copy文件,会自动解压
·WORKDIR #设置镜像的工作目录
·VOLUME #设置卷,挂载主机的目录
·EXPOSE #指定对外的端口(暴露的端口)
·RUN #指定容器启动后要做的事情
·CMD #指定容器启动的时候要运行的命令、只有最后一个会生效、可被替代
·ENTRPOINT #指定容器启动的时候要运行的命令,可以追加命令
·ONBUILD #当构建一个被继承DockerFile 这个时候会运行 ONBUILD 的指令 出发指令
·COPY #类似ADD 将我们的文件拷贝到镜像中
·ENV #构建的时候设置环境变量
·USER #用于指定用户、1切换用户
========================================================================================
测试:
1、编写dockerfile文件
·创建目录放dockerfile脚本文件
·vim mydockerfile-centos
·建议先下载centos:7镜像、在脚本里就可以直接调取 FROM centos:7、有时候版本太高的反而有问题
#以centos为基础镜像
FROM centos:7
#镜像的作者 MAINTAINER xiaoxin<303977143@qq.com> #设置登录的目录、将这个目录赋值给MYPATH ENV MYPATH /usr/local #工作目录 WORKDIR $MYPATH #运行的指令 RUN yum install -y vim RUN yum install -y net-tools #暴露端口 EXPOSE 80 CMD echo $MYPATH CMD echo "---end---" #启动后进入的命令行 CMD /bin/bash
2、通过dockerfile文件来构建镜像
docker build -f ./mydockerfile-centos -t mycentos:1.0 .
注意:·这里由于上面FROM centos 直接用了官方的最新版本的centos 、所以在执行的时候报错了、如下
解决办法:
·先下载docker pull centos:7 指定版本的centos 7 ,然后FROM centos:7 指定版本去做镜像即可
3、运行生成的镜像
·查看镜像:docker images
·运行镜像:docker run -it mycentos:1.0
·查看确实是直接到了工作目录里
··ENV MYPATH /usr/local
··WORKDIR $MYPATH
4、测试命令
·ifconfig
·vim test
5、查看镜像的建立过程、就是查看dockerfile文件内容
docker history 容器id