当前位置:   article > 正文

DockerFile怎么用?

dockerfile怎么用

DockerFile

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			# 构建时候设置环境变量
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

在这里插入图片描述

创建自定义镜像并运行容器

创建dockerfile
# 创建存放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
  • 1
  • 2
  • 3
  • 4
  • 5
# 源镜像名称
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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
创建镜像
[root@10-9-1-10 dockerfile-test]# docker build -f dockerfile_01 -t hanzhishun/centos01:1.0 .
  • 1

成功
在这里插入图片描述

运行自定义镜像
[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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

可看到

在这里插入图片描述

挂载目录与宿主机对应目录

在这里插入图片描述

挂载成功!

数据卷容器

# 先启动一个父容器
[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
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

即使centos-han01被删除,只要挂载绑定目录的容器在运行,数据也不会丢失。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/神奇cpp/article/detail/834694
推荐阅读
相关标签
  

闽ICP备14008679号