Dockerfile使用

102 阅读3分钟

初认识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来挂载。

数据卷容器

image.png

实践:

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是用来构建镜像的文件,是一个命令参数脚本。

构建步骤:

  1. 编写一个dockerfile文件。
  2. docker build构建成为一个镜像。
  3. docker run运行镜像。
  4. docker push发布镜像(dockerhub和阿里云镜像仓库)。

官方的dockerfile,如centos的内容如下:

image.png

可以看到内容十分简洁,很多功能通常没有,所以我们会根据自己的需求做一个满足自己需求镜像

dockerfile的构建过程

基础知识

    1. 每个指令都必须是大写字母。
  1. 执行顺序从上到下。
  2. #表示注释。
  3. 每一行命令都创建一个新的镜像层并提交。

dockerfile命令

  • FROM 基础镜像,一切从这里开始构建
  • MAINTAINER 镜像的作者,姓名+邮箱
  • RUN 镜像构成时候运行的命令
  • ADD 添加需要安装程序的压缩包
  • WORKDIR 镜像的工作目录
  • VOLUME 挂载的目录
  • EXPOST 暴露端口配置
  • CMD 指定这个容器启动时候运行的命令,只有最后一个会生效,可被替代
  • ENTRYPOINT 指定这个容器启动时候运行的命令,可以追加命令
  • ONBUILD 当构建一个被继承的dockerfile时候就会触发这个指令
  • COPY 类似ADD,讲我们文件拷贝到镜像中
  • ENV 构建的时候设置环境变量

image.png

实战测试:创建一个自己的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文件

image.png