docker18.09.5 Dockerfile文件编写

Dockerfile命令详解(超全版本)  http://www.javashuo.com/article/p-zpshpgtw-ez.html html

案例1java

dockerfile文件内容:nginx

FROM centos
MAINTAINER jack
COPY jdk1.7.0_79 jdk1.7.0_79
ADD  springcloud-eureka.jar  springcloud-eureka.jar
ENV JAVA_HOME=/jdk1.7.0_79
ENV PATH=$JAVA_HOME/bin:$PATH
ENV CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
EXPOSE 8080
ENTRYPOINT ["java","-jar","/springcloud-eureka.jar"]

FROM:指定容器运行的基础镜像
MAINTAINER:告诉Docker该镜像的做者是谁
COPY:把构建目录下的jdk copy到运行容器中
ADD:  add src dint    把宿主机下的src文件复制到容器的dint指定目标路径下
ENV:配置jdk
EXPOSE:告诉Docker服务端暴露端口,在容器启动时须要经过 -p 作端口映射
ENTRYPOINT:当容器启动后执行的命令

redis

案例2spring

FROM centos
MAINTAINER jack
ENV REFRESHED_AT 2018-3-13
RUN yum update -y 
RUN yum -y install wget
WORKDIR /etc/yum.repos.d/
RUN wget http://mirrors.aliyun.com/repo/epel-6.repo
RUN yum -y install redis 
EXPOSE 6379

 RUN  运行命令docker

WORKDIR   指定进入容器后的默认路径centos

ENV  定义一个变量,key  value键值对bash

执行dockerfile文件ui

docker build -t jack/redis .       //最后的.表示在当前目录下查找dockerfile文件。jack/redis是镜像命名, 查看镜像及版本命令: docker images

 CMD与ENTRYPOINT指令区别spa

CMD[“/bin/bash”]
效果跟在run后面加命令是同样的,只是run后面的命令会覆盖CMD中的命令
Docker run –ti aff4057ca9cc  /bin/bash             //这里的aff4057ca9cc 是镜像ID
在dockerfile中只能指定一条CMD指令。若是指定了多条,也只有最后一条CMD指令会被使用。

ENTRYPOINT跟CMD命令相似,只是ENTRYPOINT中的命令,会跟run后面的命令叠加如: ENTRYPOINT[“usr/local/nginx”]Docker run –ti –d aff4057ca9cc –g “daemon off;” 。那么最后容器启动后,Nginx启动的命令是: usr/local/nginx  -g  “daemon off;” ENTRYPOINT[“usr/local/nginx”,”-g”,” daemon off;”]这样是同样的效果

相关文章
相关标签/搜索