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;」]這樣是同樣的效果

相關文章
相關標籤/搜索