dockerfile定制docker的腳本文件


Dockerfile文件詳解  

#指定操作系統
FROM scratch #制作base image 基礎鏡像,盡量使用官方的image作為base image
FROM centos #使用base image
FROM ubuntu:14.04 #帶有tag的base image

#定義dockerfile一些參數信息的指令
LABEL version=“1.0” #容器元信息,幫助信息,Metadata,類似於代碼注釋
LABEL maintainer=“yc_uuu@163.com"

#對於復雜的RUN命令,避免無用的分層,多條命令用反斜線換行,合成一條命令!
RUN yum update && yum install -y vim \
    Python-dev #反斜線換行
RUN /bin/bash -c "source $HOME/.bashrc;echo $HOME”

#指定進入容器后的默認路徑
WORKDIR /root #相當於linux的cd命令,改變目錄,盡量使用絕對路徑!!!不要用RUN cd
WORKDIR /test #如果沒有就自動創建
WORKDIR demo #再進入demo文件夾
RUN pwd     #打印結果應該是/test/demo

ADD and COPY 
ADD  本地的資料    容器內的存放路徑 
#ADD除了有添加的作用,還有解壓縮的作用 
ADD hello.txt    /  #把本地文件添加到鏡像中,吧本地的hello可執行文件拷貝到鏡像的/目錄
ADD test.tar.gz   /  #添加到根目錄並解壓,自動的解壓test.tar.gz  解壓為test

WORKDIR /root
ADD hello test/  #進入/root/ 添加hello可執行命令到test目錄下,也就是/root/test/hello 一個絕對路徑
COPY hello test/  #等同於上述ADD效果

ADD與COPY
   - 優先使用COPY命令
    -ADD除了COPY功能還有解壓功能
添加遠程文件/目錄使用curl或wget

ENV #環境變量,盡可能使用ENV增加可維護性
ENV MYSQL_VERSION 5.6 #設置一個mysql常量
RUN yum install -y mysql-server=“${MYSQL_VERSION}” 

------這里需要稍微理解一下了-------中級知識---先不講

VOLUME and EXPOSE 
存儲和網絡

RUN and CMD and ENTRYPOINT
RUN:執行命令並創建新的Image Layer
CMD:設置容器啟動后默認執行的命令和參數
ENTRYPOINT:設置容器啟動時運行的命令

Shell格式和Exec格式
RUN yum install -y vim
CMD echo ”hello docker”
ENTRYPOINT echo “hello docker”

Exec格式
RUN [“apt-get”,”install”,”-y”,”vim”]
CMD [“/bin/echo”,”hello docker”]
ENTRYPOINT [“/bin/echo”,”hello docker”]


通過shell格式去運行命令,會讀取$name指令,而exec格式是僅僅的執行一個命令,而不是shell指令
cat Dockerfile
    FROM centos
    ENV name Docker
    ENTRYPOINT [“/bin/echo”,”hello $name”]#這個僅僅是執行echo命令,讀取不了shell變量
    ENTRYPOINT  [“/bin/bash”,”-c”,”echo hello $name"]

CMD
容器啟動時默認執行的命令
如果docker run指定了其他命令(docker run -it [image] /bin/bash ),CMD命令被忽略
如果定義多個CMD,只有最后一個執行

ENTRYPOINT
讓容器以應用程序或服務形式運行
不會被忽略,一定會執行
最佳實踐:寫一個shell腳本作為entrypoint
COPY docker-entrypoint.sh /usr/local/bin
ENTRYPOINT [“docker-entrypoint.sh]
EXPOSE 27017
CMD [“mongod”]

[root@master home]# more Dockerfile
FROm centos
ENV name Docker
#CMD ["/bin/bash","-c","echo hello $name"]
ENTRYPOINT ["/bin/bash","-c","echo hello $name”]
Dockerfile文件詳解

dockerfile定制python flask-web程序實例

(/opt/dockerfile/)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM