初认识dockerfile
Dockerfile就是用来构建docker镜像的构建文件,它是一段命令脚本,通过这个脚本可以生成一个镜像,镜像是一层一层的,脚本一个个的命令就是一层层。
创建一个Dockerfile文件,名字可以随机
文件中的内容 指令(大写) 参数
例如:FROM centos
VOLUME ["volume01","volume02"]
CMD echo "end"
CMD /bin/bash
这里每个命令都是镜像的一层
docker build -f dockerfile1(dockerfile文件的地址) -t sed/centos:1.0(自己镜像的名字及标签) 创建自己的镜像
这里volume01和volume02是匿名挂载,挂载的卷通过docker inspect 容器id来查看挂载位置。这种方式使用会非常多,因为通常会自己构建镜像。假设构建镜像时候没有挂载卷,就要手动用-v来挂载。
数据卷容器
实践:
1.启动第一个容器:docker run -it --name docker01 sed/centos
2.启动第二个容器,并把第二个容器挂载在第一个容器上:docker run -it --name docker02 --volume-from docker01 sed/centos
这样docker02就挂载到了docker01上,同理可以创建docker03挂载到docker01上
如果docker02和docker03都挂载在docker01上,当删除docker01时,已经有的文件在docker02和docker03中仍然能访问,所以这不是一种数据共享而是数据拷贝
结论:容器之间配置信息的传递,数据卷容器的生命周期持续到没有容器使用卷为止,只要拷贝到了本地,即使原有的容器删除了但是数据仍然存在。
Dockerfile
dockerfile介绍
dockerfile是用来构建镜像的文件,是一个命令参数脚本。
构建步骤:
- 编写一个dockerfile文件。
- docker build构建成为一个镜像。
- docker run运行镜像。
- docker push发布镜像(dockerhub和阿里云镜像仓库)。
官方的dockerfile,如centos的内容如下:
可以看到内容十分简洁,很多功能通常没有,所以我们会根据自己的需求做一个满足自己需求镜像
dockerfile的构建过程
基础知识
-
- 每个指令都必须是大写字母。
- 执行顺序从上到下。
- #表示注释。
- 每一行命令都创建一个新的镜像层并提交。
dockerfile命令
- FROM 基础镜像,一切从这里开始构建
- MAINTAINER 镜像的作者,姓名+邮箱
- RUN 镜像构成时候运行的命令
- ADD 添加需要安装程序的压缩包
- WORKDIR 镜像的工作目录
- VOLUME 挂载的目录
- EXPOST 暴露端口配置
- CMD 指定这个容器启动时候运行的命令,只有最后一个会生效,可被替代
- ENTRYPOINT 指定这个容器启动时候运行的命令,可以追加命令
- ONBUILD 当构建一个被继承的dockerfile时候就会触发这个指令
- COPY 类似ADD,讲我们文件拷贝到镜像中
- ENV 构建的时候设置环境变量
实战测试:创建一个自己的centos镜像
dockerhub中基本所有镜像都是从scratch开始的,然后配置需要的软件和配置来构建镜像
1.编写dockerfile文件 FROM centos:7
MAINTAINER SED<604723254qq.com>
ENV MYPATH /usr/local
WORKDIR $MYPATH
RUN yum -y install vim
RUN yum -y install net-tools
EXPOSE 80
CMD /bin/bash
2.通过文件构建镜像 命令:docker build -f dockerfile文件路径 -t 镜像名:tag
3.测试运行
4.可以通过 docker history 容器id来看镜像变更历史。
实战测试:创建一个自己的tomcat镜像
1.准备镜像文件tomcat压缩包,jdk的压缩包。
2.编写dockerfile文件