Alpine Linux是一个轻型Linux发行版,它不同于通常的Linux发行版,Alpine采用了musl libc 和 BusyBox以减少系统的体积和运行时的资源消耗。Alpine Linux提供了自己的包管理工具:apk,我们可以通过https://pkgs.alpinelinux.org/packages 查询包信息。

Alpine Docker镜像继承了Alpine Linux发行版的这些优势,相比于其他Linux Docker进行,它的体积非常小,docker.io/alpine:3.7只有4.15M,而 CentOS和Ubuntu系列的Docker镜像则都在200M左右。据说Docker官方也已开始推荐使用Alpine替代之前的Ubuntu来作为基础镜像,因为这样会带来多个好处,包括镜像下载速度加快,镜像安全性提高,占用更少的主机磁盘空间等。

Alpine Docker为了精简体积,默认是没有安装bash的。 需要的话可以查看官方文档:https://www.cyberciti.biz/faq/alpine-linux-install-bash-using-apk-command/

-----------------------------------------------------------------------------------------------------------------------------

格式为:

VOLUME ["<路径1>", "<路径2>"...]
VOLUME <路径>

之前我们说过,容器运行时应该尽量保持容器存储层不发生写操作,对于数据库类需要保存动态数据的应用,其数据库文件应该保存于卷(volume)中,后面的章节我们会进一步介绍 Docker 卷的概念。

为了防止运行时用户忘记将动态文件所保存目录挂载为卷,在 Dockerfile 中,我们可以事先指定某些目录挂载为匿名卷,这样在运行时如果用户不指定挂载,其应用也可以正常运行,不会向容器存储层写入大量数据。

VOLUME /data

这里的 /data 目录就会在运行时自动挂载为匿名卷,任何向 /data 中写入的信息都不会记录进容器存储层,从而保证了容器存储层的无状态化。当然,运行时可以覆盖这个挂载设置。比如:

docker run -d -v mydata:/data xxxx

在这行命令中,就使用了 mydata 这个命名卷挂载到了 /data 这个位置,替代了 Dockerfile 中定义的匿名卷的挂载配置。

使用 dokcer inspect mycontainer 可以查看到具体的挂载情况:

如上图所示,容器中的"/home/xiaoban/logs/eureka-server/log" 被自动匿名挂载到了本地机器上的 /var/lib/docker/volumes/***

Dockerfile指令详解--VOLUME 指令的更多相关文章

  1. 7 Dockerfile指令详解 && VOLUME 指令

    格式为: VOLUME ["<路径1>", "<路径2>"...] VOLUME <路径> 之前我们说过,容器运行时应该尽量 ...

  2. angular指令详解--自定义指令

    自定义指令 directive()这个方法是用来定义指令的: angular.module('myApp', []) .directive('myDirective', function ($time ...

  3. 6 Dockerfile指令详解 && ENTRYPOINT 指令

    ENTRYPOINT 的格式和 RUN 指令格式一样,分为 exec 格式和 shell 格式. ENTRYPOINT 的目的和 CMD 一样,都是在指定容器启动程序及参数. ENTRYPOINT 在 ...

  4. 5 Dockerfile指令详解 && CMD 指令

    CMD 指令的格式和 RUN 相似,也是两种格式: shell 格式: CMD <命令> exec 格式: CMD ["可执行文件", "参数1", ...

  5. 4 Dockerfile指令详解 && COPY 指令

    COPY 指令将从构建上下文目录中 <源路径> 的文件/目录复制到新的一层的镜像内的 <目标路径> 位置.比如: COPY package.json /usr/src/app/ ...

  6. nginx.conf中关于nginx-rtmp-module配置指令详解

    译序:截至 Jul 8th,2013 官方公布的最新 Nginx RTMP 模块 nginx-rtmp-module 指令详解.指令Corertmp语法:rtmp { ... }上下文:根描述:保存所 ...

  7. Nginx RTMP 模块 nginx-rtmp-module 指令详解

    译序:截至 Jul 8th,2013 官方公布的最新 Nginx RTMP 模块 nginx-rtmp-module 指令详解.指令Corertmp语法:rtmp { ... }上下文:根描述:保存所 ...

  8. Docker技术入门与实战 第二版-学习笔记-3-Dockerfile 指令详解

    前面已经讲解了FROM.RUN指令,还提及了COPY.ADD,接下来学习其他的指令 5.Dockerfile 指令详解 1> COPY 复制文件 格式: COPY  <源路径> .. ...

  9. [转]JVM指令详解(上)

    作者:禅楼望月(http://www.cnblogs.com/yaoyinglong) 本文主要记录一些JVM指令,便于记忆与查阅. 一.未归类系列A 此系列暂未归类. 指令码    助记符      ...

随机推荐

  1. File类相关操作

    1.File类常见方法: 创建: boolean createNewFile():在指定位置创建文件 如果该文件已经存在,则不创建,返回false,和输出流不一样,输出流对象一建立就创立文件,而且文件 ...

  2. net start/stop mysql access denied.拒绝访问

    转载:Mysql net start mysql启动,提示发生系统错误 5 拒绝访问 解决之道 为什么会出现这个问题呢?经过一番思考找到原因了,是因为当前用户的操作权限太低了,出了问题 出错问题截屏如 ...

  3. APP加急审核

    提交加急审核需要理由,一般涉及到银行信息,或者崩溃打不开这种的比较容易通过.反正苹果很苛刻,一般不给处理.如果处理第二天就可以下载最新了,省去了漫漫的等待.一个成功加急审核的借口-- We found ...

  4. php之强制回调类型callable

    <?php function demo(callable $fn) { $fn(); } function callback() { echo __FUNCTION__,'<br/> ...

  5. JavaBasic_11

    Object默认的实现是比较对象的地址 Object默认的实现是比较对象的地址局部内部类 局部位置内部类:局部是指方法体中 1.可以直接访问外部类的成员(这个特征是所有内部类所共有) 2.可以创建内部 ...

  6. net core 解除上传大附件的限制

    1.对于使用自带服务器kernal的情况下,只需要在对应的action上添加属性 DisableRequestSizeLimit [HttpPost] [DisableRequestSizeLimit ...

  7. 关于函数式编程(Functional Programming)

    初学函数式编程,相信很多程序员兄弟们对于这个名字熟悉又陌生.函数,对于程序员来说并不陌生,编程对于程序员来说也并不陌生,但是函数式编程语言(Functional Programming languag ...

  8. 巧妇难为无米之炊( Model数据)

    一.相隔万里的客户端服务器数据交互 请求头发过去的轻量级文本数据,后台根据这些信息处理  response返回的如果时html的话,那么是全局刷新 在ajax中data回调获得了数据,然后操作dom进 ...

  9. centos7 下yum源安装nginx

    简单粗暴: .rpm -ivh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noar ...

  10. Windows安装配置Anaconda2/PyCharm

    一.安装Anaconda2 1.进入Anaconda官网:https://www.anaconda.com/download/,下载对应版本的安装包. 2.下载成功后,打开可执行文件进行安装. 3.N ...