美文网首页
Dockerfile 定制镜像

Dockerfile 定制镜像

作者: 七月_JulyFY | 来源:发表于2019-08-22 10:36 被阅读0次

1. 在/usr/local/docker 目录下创建目录 xxx 例如 yb
2. 拉取基础镜像 :例如 需要定制jetty镜像 则先拉取jetty (比tomcat更轻量的servlet容器)
3. 在 yb 目录下 vi Dockerfile

Dockerfile 是一个文本文件,其内包含了一条条的指令(Instruction),每一条指令构建一层,因此每一条指令的内容,就是描述该层应当如何构建。每一条Dockerfile指令就是创建一个分层(镜像构建时,会一层层构建,前一层是后一层的基础。每一层构建完就不会再发生改变,后一层上的任何改变只发生在自己这一层)

编写指令 例如:

FROM jetty
WORKDIR /var/lib/jetty/webapps
RUN mkdir ROOT
WORKDIR /var/lib/jetty/webapps/ROOT
COPY myshop.zip /var/lib/jetty/webapps/ROOT
RUN unzip myshop.zip
WORKDIR /var/lib/jetty

FROM jetty ----定制的镜像来源于 jetty 镜像 相当于继承

WORKDIR /var/lib/jetty/webapps ----进入到 /var/lib/jetty/webapps 工作目录(不能用 cd 不然下面的 RUN 不是在上面的目录运行。因为每一条指令就是创建一个分层 而cd 不会创建分层 下面的分层没有) 注意:jetty的工作目录是/var/lib/jetty/ 具体看docker仓库搜索jetty介绍

RUN mkdir ROOT ----在上一个分层的基础上创建目录ROOT (但还是在/var/lib/jetty/webapps目录)

WORKDIR /var/lib/jetty/webapps/ROOT----进入 /var/lib/jetty/webapps 目录

COPY myshop.zip /var/lib/jetty/webapps/ROOT-----将上下文目录下的myshop.zip 拷贝到/var/lib/jetty/webapps/ROOT 目录下(可以用.代表当前目录)

WORKDIR /var/lib/jetty ------重新回到 /var/lib/jetty 目录 因为jetty 在这个目录才会运行成功(跟tomcat相似 /usr/local/tomcat)

上述指令 相当于在镜像中 添加了 ROOT 目录 以及 部署了项目----以后由该镜像创建的容器都具有这些 进入到容器的目录也会是/usr/local/jetty目录。

4. 将需要上传到镜像的文件拷贝到 /usr/local/docker/yb 目录下(因为创建镜像的时候 ==docker build 命令将路径下(/yb目录)的所有内容打包,然后上传给 Docker 引擎。这样 Docker 引擎收到这个上下文包后,展开就会获得构建镜像所需的一切文件,即/yb目录下的就称为上下文==) COPY xx 代表复制上下文路径的 xx

[ADD 命令 先拷贝后自动压缩 (尽量不用 有时候会出错 了解就行)]

5. 创建镜像 : docker build -t 镜像名 . (. 代表上下文, yb目录下的所有文件) 例如 docker build -t gg

当存在构建的镜像时 再一次运行构建 如果Dockerfile中修改较大 且新构建的镜像名与存在的一致 则新构建的镜像名会覆盖存在的 存在的镜像会变为虚拟镜像 <none> ,当改动不大时 会直接覆盖存在的镜像(将存在的镜像当做缓存一般 相同的分层不需要重新构建)

6. 运行镜像中部署的项目 docker run -p 8080:8080 --yueba -d Build_images_Name(当然还得先运行mysql容器) 例如 docker run -p 8080:8080 --yueba -d gg

Dockfile编辑的时候每次出现Dockfile关键字就是创建了一层(分层存储) 下一层具有上一层的东西,在Dockerfile用cd 进入目录 再RUN 目录指令 不会生效 RUN这一层的工作目录不具有cd的目录

CMD指令与 ENTRYPOINT 指令的区别:

差异1:CMD指令指定的容器启动时命令可以被docker run指定的命令覆盖,而ENTRYPOINT指令指定的命令不能被覆盖,而是将docker run指定的参数当做ENTRYPOINT指定命令的参数

差异2:CMD指令可以为ENTRYPOINT指令设置默认参数,而且可以被docker run指定的参数覆盖

相关文章

  • Docker 定制镜像

    使用Dockerfile定制镜像 Dockerfile from指定镜像基础 在 Docker Hub 上有非常多...

  • docker常用操作命令

    Dockerfile镜像定制 vim Dockerfile 创建定制文件,写入具体配置内容 docker buil...

  • docker 笔记6

    Dockerfile 定制镜像 touch Dockerfile docker build -t myngin...

  • docker下LNMP环境的搭建

    mysql镜像下载 nginx镜像下载 php镜像定制,以下为Dockerfile 生成新的php镜像 LNMP启...

  • Dockerfile 定制镜像

    1. 在/usr/local/docker 目录下创建目录 xxx 例如 yb2. 拉取基础镜像 :例如 需要定...

  • Dockerfile 定制镜像

    从上一篇文章中我们可以了解到,镜像的定制实际上就是定制每一层所添加的配置、文件等信息,但是命令毕竟只是命令,每次定...

  • Dockerfile 定制镜像

    介绍 Dockerfile 是一个文本文件,其内包含了一条条的指令(Instruction),没一条指令构建一层,...

  • 九、Dockerfile应用

    1、 通过dockefile定制企业镜像 dockerfile的基本使用方式 创建用于存放dockerfile的目...

  • docker 镜像和容器常用命令大全(已区分)带思维导图

    镜像操作命令 attach 当前shell下attach链接制定运行镜像build 通过dockerfile定制...

  • Dockerfile文件指令

    docker使用Dockerfile来定制镜像,那么Dockerfile文件如何编写?以下就是一个简单的Docke...

网友评论

      本文标题:Dockerfile 定制镜像

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