關於docker構建鏡像

今天正好看到這一塊了,記錄一下,但願能夠幫助到你們。java

構建Dockerfilec++

先來看一個示例:redis

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------docker

#第一行必須基於某個鏡像數據庫

FROM java:8-jrecentos

#維護者信息
MAINTAINER dtelec developerapp

#鏡像的操做指令ui

ADD ./target/icmes-schedule-service.jar /app/centos7

#容器啓動時執行指令
CMD ["java", "-Xmx200m", "-jar", "/app/icmes-schedule-service.jar"]spa

#暴露出來對外的端口

EXPOSE 9800

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

 

  1. FROM
    1. 格式爲FROM<image>或者FROM<image>:<tag>
  2. MAINTAINER
    1. 格式爲MAINTAINER<name>,指定維護者信息、
  3. RUN
    1. 格式爲RUN<command>或者["executable","param1","param2"].
  4. CMD
    1. CMD["executable","param1","param2",]使用exec執行,推薦方式。
    2. 指定啓動容器時執行的命令,每一個Dockerfile只能有一條CMD指令,若是指定了多條指令,則最後一條執行。(會被啓動時指定的命令覆蓋)
  5. EXPOSE
    1.   

      格式:EXPOSE <port>  [ <port> ...]

      告訴Docker服務端暴露端口,在容器啓動時須要經過 -p 作端口映射

  6. ENV
    1. 格式:ENV <key> <value>

      指定環境變量,會被RUN指令使用,並在容器運行時保存

  7. ADD
    1. 格式:ADD  <src>  <dest>

      複製指定的<src>到容器的<dest>中,<src>能夠是Dockerfile所在的目錄的一個相對路徑;能夠是URL,也能夠是tar.gz(自動解壓)

  8. COPY
    1. 格式:COPY <src>  <dest>

      複製本地主機的 <src> ( 爲 Dockerfile 所在目錄的相對路徑)到容器中的 <dest> (當使用本地目錄爲源目錄時,推薦使用 COPY)

  9. ENTRYPOINT
    1. 格式:ENTRYPOINT ["","",""]

      配置容器啓動後執行的命令,而且不可被 docker run 提供的參數覆蓋。(每一個 Dockerfile 中只能有一個 ENTRYPOINT ,當指定多個時,只有最後一個起效)

  10. VOLUME
    1. 格式:VOLUME ["/mnt"] 

      建立一個能夠從本地主機或其餘容器掛載的掛載點,通常用來存放數據庫和須要保持的數據等

  11. USER
    1. 格式:USER daemon

      指定運行容器時的用戶名或 UID,後續的 RUN 也會使用指定用戶。

  12. WORKDIR
    1. 格式:WORKDIR /path/to/workdir

      爲後續的 RUN 、 CMD 、 ENTRYPOINT 指令配置工做目錄。(可使用多個 WORKDIR 指令,後續命令若是參數是相對路徑, 則會基於以前命令指定的路徑)

  13. ONBUILD
    1. 格式:ONBUILD [INSTRUCTION]

      配置當所建立的鏡像做爲其它新建立鏡像的基礎鏡像時,所執行的操做指令

例如構建本身的鏡像:

編寫dockerfile以下:

 #基於centos7構建

FROM centos7
#維護者
MAINTAINER pray
#安裝依賴 RUN yum -y install tar cpp binutiles glibc-kernheaders glibc-common glibc-devel gcc make gcc-c++ libstdc++-devel tcl
#建立安裝目錄RUN mkdir -p /redis/data && cd /redis#拷貝redis的安裝包COPY ./redis-5.tar.gz /redis#解壓RUN cd /redis && tar -xvf redis5.tar.gz && rm -rf redis5.tar.gz && cd redis5#編譯、安裝RUN cd /redis/redis5 && make && make install#複製配置文件到/redis中,而且修改iredis爲後臺運行RUN cp /redis/redis5/redis.conf /redis/ && echo "daemonize yes" >> redis.conf#設置數據掛載目錄以及工做目錄VOLUME /redis/dataWORKDIR /redis/data#容器啓動後執行該命令ENTRYPOINT ["/user/local/bin/redis-server","/redis/redis.conf"]#設置對外的端口號 EXPOSE 6379構建命令docker build -t registry.cn-hangzhou.aliyuncs.com/for-docker/redis由於centos很大,因此我也沒有執行玩dockerfile ,不能保證必定正確;今天就先記錄到這把
相關文章
相關標籤/搜索