赞
踩
Dockerfile是用来构建镜像的文件。
步骤:
1、编写dockerfile文件。
2、docker build 运行文件。
3、docker run 运行镜像。
4、docker push 仓库,将镜像上传到镜像库。
基础:
1、保留关键字都必须是大写(指令)。
2、执行顺序从上到下。
3、每个指令都会创建一个新的镜像层,并提交。
FORM # 基础镜像
MAINTAINER # 镜像是谁写的:姓名+邮箱
RUN # 镜像构建的时候需要运行的命令
ADD # 步骤:tomcat镜像,压缩包,添加内容
WORKDIR # 镜像的工作目录
VOLUME # 挂载的目录位置
EXPOSE # 指定端口配置
CMD # 指定容器启动时的命令,只有最后一个会生效,可被替代
ENTRYPOINT # 指定容器启动时的命令,可以追加命令
ONBUILD # 当构建一个被继承 dockerfile 这个时候就会运行ONBUILD命令,触发指令。
COPY # 类似ADD,将文件拷贝到镜像中
ENV # 构建时候设置环境变量
# 创建存放dockerfile文件的目录
[root@10-9-1-10 home]# mkdir dockerfile-test
[root@10-9-1-10 home]# cd dockerfile-test/
# 编辑dockerfile_01文件
[root@10-9-1-10 dockerfile-test]# vim dockerfile_01
# 源镜像名称 FROM centos # 作者信息 MAINTAINER hanzhishun<lpphan@163.com> # 环境变量 ENV MYPATH /usr/local # 工作目录 WORKDIR $MYPATH # 执行安装组件 RUN yum -y install vim RUN yum -y install net-tools # 暴漏端口 EXPOSE 80 # 输出工作目录 CMD echo $MYPATH # 匿名挂在两个镜像目录 VOLUME ["volume01","volume02"] # 输出信息 CMD echo "===========END=========" # 使用bash工具运行 CMD /bin/bash
[root@10-9-1-10 dockerfile-test]# docker build -f dockerfile_01 -t hanzhishun/centos01:1.0 .
成功
[root@10-9-1-10 dockerfile-test]# docker run -it --name centos-han hanzhishun/centos01:1.0
[root@34ee15e69515 /]# ls
bin dev etc home lib lib64 lost+found media mnt opt proc root run sbin srv sys tmp usr var volume01 volume02
# 测试挂载目录
[root@34ee15e69515 /]# cd volume01
[root@34ee15e69515 volume01]# vi test
# 查看容器
[root@10-9-1-10 dockerfile-test]# docker inspect 34ee15e69515
可看到
挂载目录与宿主机对应目录
挂载成功!
# 先启动一个父容器
[root@10-9-1-10 _data]# docker run -it --name centos-han01 hanzhishun/centos01:1.0
# ctrl+p+q 退出当前容器且不关闭
# 再启动另一个容器
[root@10-9-1-10 _data]# docker run -it --name centos-han02 --volume-from centos-han01 hanzhishun/centos01:1.0
# 关键指令 --volume-from [父容器]
# 这样就能将两个容器的挂载目录绑定,实现数据同步
# 在centos-han01的 volume01上创建文件可发现 centos-han02的volume01文件夹同样也有该文件
[root@10-9-1-10 _data]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
03570fcdb404 hanzhishun/centos01:1.0 "/bin/sh -c /bin/bash" 24 seconds ago Up 23 seconds centos-han02
fc4139575213 hanzhishun/centos01:1.0 "/bin/sh -c /bin/bash" About a minute ago Up About a minute centos-han01
即使centos-han01被删除,只要挂载绑定目录的容器在运行,数据也不会丢失。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。