今天正好看到這一塊了,記錄一下,但願能夠幫助到你們。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
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
格式:EXPOSE <port> [ <port> ...]
告訴Docker服務端暴露端口,在容器啓動時須要經過 -p 作端口映射
格式:ENV <key> <value>
指定環境變量,會被RUN指令使用,並在容器運行時保存
格式:ADD <src> <dest>
複製指定的<src>到容器的<dest>中,<src>能夠是Dockerfile所在的目錄的一個相對路徑;能夠是URL,也能夠是tar.gz(自動解壓)
格式:COPY <src> <dest>
複製本地主機的 <src> ( 爲 Dockerfile 所在目錄的相對路徑)到容器中的 <dest> (當使用本地目錄爲源目錄時,推薦使用 COPY)
格式:ENTRYPOINT ["","",""]
配置容器啓動後執行的命令,而且不可被 docker run 提供的參數覆蓋。(每一個 Dockerfile 中只能有一個 ENTRYPOINT ,當指定多個時,只有最後一個起效)
格式:VOLUME ["/mnt"]
建立一個能夠從本地主機或其餘容器掛載的掛載點,通常用來存放數據庫和須要保持的數據等
格式:USER daemon
指定運行容器時的用戶名或 UID,後續的 RUN 也會使用指定用戶。
格式:WORKDIR /path/to/workdir
爲後續的 RUN 、 CMD 、 ENTRYPOINT 指令配置工做目錄。(可使用多個 WORKDIR 指令,後續命令若是參數是相對路徑, 則會基於以前命令指定的路徑)
格式: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 ,不能保證必定正確;今天就先記錄到這把