docker学习笔记(2)---Dockerfile_群晖docker 通过dockerfile_w踏雪w的博客-程序员宅基地

技术标签: Dockerfile  其他  docker  

在docker学习笔记(1)中,我们提到了通过commit 的命令来提交新的image,下面我们来通过Dockerfile文件来生成image,而且使用Dockerfile,很方便移植。


一、Dockerfile中几个常用的指令:

(1)FROM

格式:

FROM  <image>
或者

 FROM  <image>:<tag>

(2)MAINTAINER

格式:

MAINTAINER  <name>

说明:设置生成image的作者


(3)RUN

格式:

  使用shell 的形式

RUN  <command>
或 使用exec的形式

RUN ["executable",  "param1",  "param2"] 

说明:RUN指令会在当前的Image上的新一层layer执行指令,并提交结果。这些结果会在Dockerfile的下一步中使用到。


(4)CMD

格式:

CMD ["executable","param1","param2"]  
CMD ["param1","param2"] 
CMD command param1 param2

说明:CMD指令会在启动container时执行服务,例如一个命令,启动一个服务,或启动一个脚本之类的。

注意:一个Dockerfile文件只能有一个CMD指令,如果有多条,则只有最后一条有效。


(5)ADD

格式:

ADD  <src>  .... <dest>

说明:

如果要ADD本地文件,则本地文件必须在 docker build <PATH>,指定的<PATH>目录下,如:ADD  files    /root/hadoop_files/(注意,这里hadoop_files后面要有/,否则在build  Dockerfile时会失败,提示说: lchown /var/lib/docker/aufs/mnt..........................not  a directory之类的报错信息)

如果要ADD远程文件,则远程文件必须在 docker build <PATH>,指定的<PATH>目录下,如:ADD  ADD https://archive.apache.org/dist/hadoop/common/hadoop-1.0.4/hadoop-1.0.4-bin.tar.gz /root/


(6)VOLUME

格式:

VOLUME  ["/data"]
说明:可以将本地文件夹或者其他container的文件夹挂载到container中。


二、例子

下面的Dockerfile创建一个基于ubuntu:precise的镜像。

通过docker build  -t  ubuntu:base   .   命令执行。

#Authro:wgc
#Data:2014-10-24
#Introduction:Build basic development
From ubuntu:precise

# Set correct source list
RUN echo "deb http://archive.ubuntu.com/ubuntu precise main universe" > /etc/apt/sources.list
RUN echo "deb http://archive.ubuntu.com/ubuntu precise-updates main universe" >> /etc/apt/sources.list

# Install a few other useful packages plus Open Jdk 7
RUN apt-get update && apt-get upgrade -y && apt-get install -y openjdk-7-jdk wget vim sudo openssh-server 

# Add hadoop_files
ADD files /root/hadoop_files/

# Set JAVA_HOME
ENV JAVA_HOME /usr/lib/jvm/java-7-openjdk-amd64
RUN echo export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64 >> /root/.bashrc

# Download hadoop
ADD https://archive.apache.org/dist/hadoop/common/hadoop-1.0.4/hadoop-1.0.4-bin.tar.gz /root/




参考:

(1)docs.docker.com/reference/builder/

(2)http://blog.csdn.net/wsscy2004/article/details/25878223

(3)tonybai.com/tag/博客/






版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/wen294299195/article/details/40478529

智能推荐

Java使用AES/CBC/PKCS7Padding加密解密_java pkcs5能用pkcs7解密吗_王一一的博客的博客-程序员宅基地

JAVA不支持PKCS7Padding,只支持PKCS5Padding。要实现在JAVA端用PKCS7Padding,需要用到bouncycastle组件来实现功能。需要下载jar包https://wws.lanzous.com/iuDnVni7nbc密码:g1hf/** * @author ngh * AES128 算法 * <p> * CBC 模式 * <p> * PKCS7Padding 填充模式 * <p> * CBC模式需要添加一个参数i_java pkcs5能用pkcs7解密吗

MODIS Swath (GEOTIFF) 数据的拼接与均值运算-Python实现_geo tif加算法_梦雨璃愁的博客-程序员宅基地

目录前言Python实现前言上一篇文章实现了MODIS Swath数据的重投影。一般来说,在完成重投影之后的任务,要么是对多幅图像的拼接,要么是对多幅图像做均值运算。但这两个任务,在一定程度上是可以等同的。均值运算,在不考虑质量控制等因素的前提下,其实就是在对应的地理位置上,把属于这一个地理位置上的所有像元给加进来,并统计有效的累加次数,最后求平均即可,对于某些位置上只出现过一次的像元,其实就是把值填进去了,最后累加的次数为1,均值就是像元值本身。而拼接,实际上是相同的道理。比如两幅有重合区域的影像,重_geo tif加算法

JMeter 和 Badboy: 功能和性能测试工具_不净之心的博客-程序员宅基地

[size=x-large][color=red]JMeter[/color][/size]=======================================================[size=large][color=red]JMeter基础之一 一个简单的性能测试[/color] [/size][url]http://www.cnblogs.com/fnng/arc..._badboy no cookies

KiWi 测试平台_如何在windows 本地搭建kiwi tcms-程序员宅基地

虚拟机使用设置开启CPU虚拟化(实验环境已存档,如有需要可联系笔者)如果安装了Desktop,就同时安装了Compose插件。访问https//localhost成功运行。【重中之重】确保CPU支持虚拟化并开启。物理机联系机要室管理员使用高权限开启。启动KiwiTCMS。在Windows上安装。执行克隆命令,拉取代码。克隆git存储库。..._如何在windows 本地搭建kiwi tcms

PHP获取唯一标识UUID_php获取uuid_李维山的博客-程序员宅基地

封装函数如下:function uuid($prefix = '') { $chars = md5(uniqid(mt_rand(), true)); $uuid = substr($chars, 0, 8) . '-'; $uuid .= substr($chars, 8, 4) . '-'; $uuid .= substr($chars, 12, 4) . '-'; $uuid .= substr($chars, 16, 4) . '-'; $uui_php获取uuid

随便推点

m.2固态硬盘 服务器,M.2接口固态硬盘选购注意事项:PCIe和SATA的区别_南小瓜的博客-程序员宅基地

M.2接口固态硬盘选购注意事项:PCIe和SATA的区别2015-03-25 16:39:19596点赞1441收藏149评论浦科特在2014年发布了使用 SATA 6Gb/s 控制器的 M6G 系列固态硬盘。而在此之前,浦科特的产品线里只有使用 PCIe 控制器的 M6E 系列固态硬盘是 M.2 接口的(旧称 NGFF 接口,即 Next Generation Form Factor 的缩写)。..._pcie mode

面经——嵌入式常见面试题总结100题(上)_嵌入式面经总结pdf_行稳方能走远的博客-程序员宅基地

1,字符型驱动设备是怎么创建设备文件的,就是/dev/下面的设备文件,供上层应用程序打开使用的文件?2,写一个中断服务需要注意哪些?如果中断产生之后要做比较多的事情你是怎么做的?3,自旋锁和信号量在互斥使用时需要注意哪些?在中断服务程序里面的互斥是使用自旋锁还是信号量?还是两者都能用?为什么?4,原子操作你怎么理解?5,nsmod 一个驱动模块,会执行模块中的哪个函数?rmmod呢?这两个函数在设计上要注意哪些?遇到过卸载驱动出现异常没?是什么问题引起的?6,在驱动调试过程中遇到过oops没?你是_嵌入式面经总结pdf

【kubernetes/k8s源码分析】 client-go包之Informer源码分析_newsharedinformerfactory(client kubernetes.interfa_张忠琳的博客-程序员宅基地

kubernetes v1.12: https://github.com/kubernetes/kubernetesInformer 简介 Informer 是 Client-go 中的一个核心工具包。如果 Kubernetes 的某个组件,需要 List/Get Kubernetes 中的 Object(包括pod,service等等),可以直接使用 Informer 实例中..._newsharedinformerfactory(client kubernetes.interface, defaultresync time.dur

vue 父子组件互相传值容易出现的报错_weixin_33894992的博客-程序员宅基地

对于父子组件之间的互相传值,报错如下:[Vue warn]: Avoid mutating a prop directly since the value will be overwritten whenever the parent component re-renders. Instead, use a data or computed property based on the prop...

BO2k源代码分析(一)----WinMain()函数_saiwai76的博客-程序员宅基地

花了些时间分析BO2K,现将结果依次发表出来.接着还将发表BO消息循环机制,网络原理,自编LoadLibrary()的实现,Plug In原理,关键命令的实现原理等. 愿对诸君C++编程和Windows编程有所益. 一 BO2K服务器原理概述 BO2K服务器程序首先判断是否已经安装了BO2K,如果已经安装,则简单的启动服务器,侦听端口。如果没有安装则拷贝自身到系统目录下,

Element树原理_element uitree实现原理_杨充的博客-程序员宅基地

目录介绍01.Element是什么东西02.Element源码的分析03.Element创建过程分析04.mount方法调用分析05.理解BuildContext01.Element是什么东西Widget和Element的关系知道最终的UI树其实是由一个个独立的Element节点构成。也说过组件最终的Layout、渲染都是通过RenderObject来完成的。从创建到渲染的大体流程是:根据Widget生成Element,然后创建相应的RenderObject并关联到Element._element uitree实现原理

推荐文章

热门文章

相关标签