Dockerfile details

demo相关地址

Dockerfile内容:

FROM node:8.4.0-alpine

RUN set -ex \
   && npm install -g mountebank

RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app

COPY ./imposter.ejs /usr/src/app
COPY ./mockApi /usr/src/app/mockApi

EXPOSE 8001
CMD mb --configfile imposter.ejs

#CMD语句与RUN不同,RUN是在build镜像的时候运行,而CMD语句是在build结束后运行。
#一个Dockerfile钟可以有多个RUN语句,虽然也可以有多个CMD语句,但是却只有最后一条CMD语句会执行。
  1. RUN set -ex \ 的作用
    set是shell的一个命令,因为shell的执行的过程中,如果有某个出错了,也会继续往下执行,set -ex作用就是,当下面的命令执行出错后,就退出执行,不在继续往下执行。

  2. Dockerfile 的ADDCOPY 的区别:
    在build镜像时ADD

  • ADD 可以实现从远程的某个指定的url上下载文件,然后添加到容器的系统文件目录中。
  • ADD可以将本地可识别的压缩文件解压到容器的指定路径上(但是URL下载和解压不能同时进行,任何通过远程URL下载的压缩文件,都只能拷贝到容器中,不会自动解压)
    COPY:
  • 它是ADD的一个简化版本,它只会复制文件到容器中
  1. mkdir -p /var/www/app中的-p :
    因为mkdir创建目录时,不是递归的,所以想要从非现有的父目录创建子目录,就必须使用 -p来不存在的父目录下创建子目录

使用多个FROM基础镜像来构建多个镜像,dockerfile 如下:

FROM jetty
MAINTAINER "xxx <xxx@163.com>"
COPY RESTful.war /var/lib/jetty/webapps/
FROM jetty
MAINTAINER "xxx <xxx@163.com>"
COPY serverManager.war /var/lib/jetty/webapps/

build 的时候:加 -t 指定仓库名称、tag名称,只对最后一个镜像有效。
如果不加-t,所有新生成镜像都没有仓库名、tag名称。

试过以下几种build生成镜像命令:
1、docker build -t test/restful -t test/manager .      
//指定多次-t ,只有最后一个镜像有名称,前面都是<none>

2、docker build .                             
 //不指定-t,新生成的镜像都是<none>

关于Dockerfile的操作

写好Dockerfile后,可以使用docker来构建一个镜像:

$ docker build .  // . 表示本地Dockerfile的路径
查看刚才创建的容器

通过构建的这个镜像来创建一个容器:

$ docker images
$ docker run -p 8001:8001 7784202e0e60( 镜像ID || 镜像名字) 

如果创建容器总是有错,就需要把错误信息更正了,然后重新构建以此镜像,再创建容器。
但是再创建容器总是出错的时候 ,可以进入到docker中去查看目录等信息:

docker run -it d0b7e6faf4eb sh

构建一个指定名字镜像:

 docker build -t mounteserver .   //通过Dockerfile构建了名字为mountersever的镜像

将自己写好的Dockerfile放到远程docker hub上。
step1: 需要在本地登陆Docker:

$ docker login
 然后输入username(是用户名,不是Docker ID(邮箱)) 和password 

将本地的某个镜像push到远程的Docker hub的镜像库中

//表示通过当前目录的Dockerfile构建一个镜像 名字叫qmm888/qmm
// 注意! 构建镜像名格式必须为:`docker hub的用户名/自定义镜像名`, 否则就会出现push到docker hub时,提示没有权限.
$ docker build -t qmm888/qmm .    

$ docker push qmm888/qmm   //然后把这个镜像push到远程的qmm888用户的qmm仓库下
⚠️: 需要镜像的名字和远程库的目录一致,才能push成功

给镜像打标签

$ docker tag qmm888/qmm qmm888/qmm:0.0.1
$ docker push qmm888/qmm:0.0.1
docker hub 上的我提交的镜像

可以看到第一次提交的镜像没有指定标签,docker就会默认给它一个lastest的标签;
第二次指定标签为0.0.1(可以认是一个版本),在Tag Name中显示了

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,456评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,370评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,337评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,583评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,596评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,572评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,936评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,595评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,850评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,601评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,685评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,371评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,951评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,934评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,167评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,636评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,411评论 2 342

推荐阅读更多精彩内容

  • 转载自 http://blog.opskumu.com/docker.html 一、Docker 简介 Docke...
    极客圈阅读 10,468评论 0 120
  • 0. 前言 docker是什么?docker是用GO语言开发的应用容器引擎,基于容器化,沙箱机制的应用部署技术。可...
    sessionboy阅读 3,836评论 2 49
  • docker基本概念 1. Image Definition 镜像 Image 就是一堆只读层 read-only...
    慢清尘阅读 8,720评论 1 21
  • 五、Docker 端口映射 无论如何,这些 ip 是基于本地系统的并且容器的端口非本地主机是访问不到的。此外,除了...
    R_X阅读 1,734评论 0 7
  • 一不小心 打倒了 一瓶怀素的百年老酒 线条醉了 墨色也醉了 古老的汉字这会是解脱了 从来不曾如此的张狂 如此的空灵...
    卓不云阅读 361评论 0 1