構建dockerfile的13個命令


1、Dockerfile的基本指令有十三個,分別是:FROM、MAINTAINER、RUN、CMD、EXPOSE、ENV、ADD、COPY、ENTRYPOINT、VOLUME、USER、WORKDIR、ONBUILD

基礎鏡像信息 FROM
維護者信息 MAINTAINER
鏡像操作指令 RUN、COPY、ADD、EXPOSE、WORKDIR、ONBUILD、USER、VOLUME等
容器啟動時執行指令 CMD、ENTRYPOINT

2、FROM :指定基礎鏡像
FROM livingobjects/jre8

3、RUN:執行命令
RUN apk add --no-cache tzdata
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ >

4、COPY:復制文件
將文件從宿主機復制到鏡像內,源文件需要和dockerfile在同一個目錄
COPY update.json /usr/local/nginx/share/html/

5、CMD:容器啟動命令
容器啟動時執行的命令,只有最后一個生效
CMD /bin/bash

6、MAINTAINER:指定作者
MAINTAINER lao.san lao.san@gmail.com

7、EXPOSE:暴露端口
也可以運行時暴露docker run -p 8080:80
EXPOSE 8080

8、WORKDIR:配置工作目錄
進入目錄,如不存在會創建
WORKDIR /usr/local/nginx/share/html/

9、ENTRYPOINT:容器啟動執行命名
ENTRYPOINT和CMD語法相同,區別在於:
1)CMD的命令會被docker run的命令覆蓋而ENTRYPOINT不會
2)CMD和ENTRYPOINT都存在時,CMD的指令變成了ENTRYPOINT的參數,並且此CMD提供的參數會被 docker run 后面的命令覆蓋

ENTRYPOINT [“java”,"-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar","–spring.profiles.active=test"]

10、VOLUME:掛載本地目錄或文件
VOLUME /tmp

11、USER:指定后續執行命令的用戶
USER daemon

12、ADD:添加文件
用法和COPY相同
ADD sdp-bi-datax-business.jar app.jar

13、ONBUILD:配置當前所創建的鏡像作為其它新創建鏡像的基礎鏡像時,所執行的操作指令

14、ENV:設置環境變量
1)具有傳遞性,也就是當前鏡像被用作其它鏡像的基礎鏡像時,新鏡像會擁有當前這個基礎鏡像所有的環境變量
2)ENV定義的環境變量,可以在dockerfile被后面的所有指令(CMD除外)中使用,但不能被docker run 的命令參數引用
ENV TZ=Asia/Shanghai
ENV JAVA_HOME /opt/jdk
ENV PATH P A T H : PATH:PATH:JAVA_HOME/bin

Dockerfile內容
#在centos上安裝nginx
FROM centos
#標明著作人的名稱和郵箱
MAINTAINER xxx xxx@gmail.com
#測試一下網絡環境
RUN ping -c 1 www.baidu.com
#安裝nginx必要的一些軟件
RUN yum -y install gcc make pcre-devel zlib-devel tar zlib
#把nginx安裝包復制到/usr/src/目錄下
ADD nginx-1.15.8.tar.gz /usr/src/
#切換到/usr/src/nginx-1.15.8編譯並且安裝nginx
RUN cd /usr/src/nginx-1.15.8
&& mkdir /usr/local/nginx
&& ./configure --prefix=/usr/local/nginx && make && make install
&& ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/
&& nginx
#刪除安裝nginx安裝目錄
RUN rm -rf /usr/src/nginx-nginx-1.15.8
#對外暴露80端口
EXPOSE 80
#啟動nginx
CMD [“nginx”, “-g”, “daemon off;”]

docker build -t nginx:v1.0 .

–build-arg=[] :設置鏡像創建時的變量;
-f :指定要使用的Dockerfile路徑;
–force-rm :設置鏡像過程中刪除中間容器;
–rm :設置鏡像成功后刪除中間容器;
–tag, -t: 鏡像的名字及標簽,通常 name:tag 或者 name 格式;

 


免責聲明!

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



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