Docker容器数据卷和DockerFile介绍

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zxd1435513775/article/details/82193342

一、引言

(1)、对于Java语言,我们需要编写java源代码,然后用编译器对源代码文件进行编译得到class文件,最后虚拟机再对class文件进行解释执行。

在Docker中,我们该如何生成自己的镜像,然后把镜像放到镜像库中呢?这就需要用到DockerFile。

(2)、在Redis中,我们想把数据持久化到硬盘上,我们采用AOF或者RDB的方式,但对于Docker容器如何实现数据在宿主机和容器间进行共享持久化呢?这就需要用到数据卷。

二、何为Docker容器数据卷

1、容器数据卷是什么?

Docker容器产生的数据,如果我们不通过docker commit命令来生成新的镜像,使得数据作为镜像的一部分保存下来,那么当容器删除后,数据自然就没有了。为了能保存数据在docker中,我们使用卷。

2、容器数据卷能干嘛?
(1)、可以完成容器到宿主主机、宿主主机到容器的双方向数据共享
(2)、特点:
    1、数据卷可在容器之间共享或重用数据;
    2、卷中的更改可以直接生效;
    3、数据卷中的更改不会包含在镜像的更新中;
    4、数据卷的生命周期一直持续到没有容器使用它为止;
(3)、卷的设计目的就是数据的持久化,完全独立于容器的生成周期,因此Docker不会在容器删除时删除其挂载的数据卷。
3、数据卷添加(方式一:在容器内添加 | 方式二:DockerFile添加)

(1)、直接命令添加:

    命令:docker run -it -v /宿主机绝对路径目录:/容器内目录  镜像名

    执行以下命令:
        docker run -it -v /myDataVolume:/dataVolumeContain centos
    查看数据卷是否起作用:
        docker inspect 镜像ID

这里写图片描述
(2)、查看数据卷是否挂载成功

docker inspect 容器ID

(3)、容器和宿主机之间数据共享

容器停止退出后,主机修改后数据是否可以同步到容器    (答案:可以)

(4)、命令(带权限)

命令:docker run -it -v /宿主机绝对路径目录:/容器内目录:ro 镜像名(容器内readonly,只读,不可写)

执行以下命令:
        docker run -it -v /myDataVolume:/dataVolumeContain:ro centos
查看数据卷是否起作用:
        docker inspect 镜像ID

这里写图片描述
此方式,容器中数据卷只读

三、DockerFile介绍

1、DockerFile是什么?
(1)、DockerFile为镜像模板的描述文件;
(2)、DockerFile是用来构建Docker镜像的构建文件,是由一系列命令和参数构成的脚本
2、DockerFile构建过程解析
(1)、DockerFile文件说明:
        a.  每条保留字指令都必须为大写字母且后面要跟随至少一个参数
        b.  指令按照从上到下,顺序执行
        c.  #表示注释
        d.  每条指令都会创建一个新的镜像层,并对镜像进行提交
(2)、Docker执行DockerFile的大致流程:
        a.  docker从基础镜像运行一个容器
        b.  执行一条指令并对容器作出修改
        c.  执行类似docker commit的操作提交一个新的镜像层
        d.  docker再基于刚提交的镜像运行一个新容器
        e.  执行dockerfile中的下一条指令直到所有指令都执行完成
3、如何自定义构建一个镜像?(三步骤)

(1)、编写DockerFile文件
(2)、docker build

docker build -f /mydocker/Dockerfile -t scorpios/centos .

(3)、docker run

扫描二维码关注公众号,回复: 3039638 查看本文章

四、 DockerFile体系结构说明

参数 说明
FROM 基础镜像,当前新镜像是基于哪个镜像的
MAINTAINER 镜像维护者的姓名和邮箱地址
RUN 容器构建时需要运行的命令
EXPOSE 当前容器对外暴露的端口
WORKDIR 指定在创建容器后,终端默认登陆的进来工作目录,一个落脚点
ENV 用来在构建镜像过程中设置环境变量
ADD 将宿主机目录下的文件拷贝进镜像且ADD命令会自动处理URL和解压tar压缩包
COPY 类似ADD,拷贝文件和目录到镜像中。将从构建上下文<源路径>的文件/目录复制到新的一层的镜像内的<目标路径>位置
VOLUME 容器数据卷,用于数据保存和持久化工作
CMD
ENTRYPOINT
ONBUILD

当使用DockerFile中的VOLUME属性添加数据卷时:
这里写图片描述

猜你喜欢

转载自blog.csdn.net/zxd1435513775/article/details/82193342
今日推荐