美文网首页
Dockerfile details

Dockerfile details

作者: 吧啦啦小汤圆 | 来源:发表于2017-10-11 22:43 被阅读155次

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中显示了

相关文章

  • Dockerfile details

    demo相关地址 Dockerfile内容: RUN set -ex \ 的作用set是shell的一个命令,因为...

  • Details

    “我徒弟真的很勤奋啊!” “我徒弟还在睡觉呢!” “哈哈,你徒弟那是随他师傅。” “我是嫁鸡随鸡嫁狗随狗。” “哦...

  • Details

    1.他知道我有段时间喜欢吃烧卖。大冬天,有一天晚自修他去外面补课回来,本来咱俩有点小矛盾,他回来之后把围巾揉成一坨...

  • details

    格式: 概要信息 详细信息 作用:利用summary标签描述简要信息,利用details标签描述详细信息,默...

  • EF details & Gain details

    EF详细信息 EFCoeff 详细信息 增益详情 子控制器详细信息 外部输入详细信息 外部输出详细信息 原文:EF...

  • The Importance of Details

    April 22, 2014 Overcast Tuesday Recently I ...

  • gem details

    Gem 操作指南 and Ruby Gem 命令详解 Gem 是一个管理ruby库和程序的标准包,它通过Ruby ...

  • Details 1

    不知道给自己取个什么样的主题,不如叫Details。 「你应该要选择热爱,如果你有」 我想要我想要我想要,天天都有...

  • python details

    字符串: 双引号内可包含单引号,单引号内可包含双引号,否则内部引号需要转义“字符串+*号+次数”:重复打印字符串 ...

  • the elaborate details

    1. From safari: 鼠标移入,地址栏左端浮现"添加"按钮,同时显示文案“将页面添加到阅读列表”,看到这...

网友评论

      本文标题:Dockerfile details

      本文链接:https://www.haomeiwen.com/subject/sitojxtx.html