dockerfile常用指令


指令 描述 指令 描述
FROM

構造的新鏡像是基於哪個鏡像

例如:FROM centos:v1

COPY

拷貝文件或者目錄到鏡像,用法同ADD

例如:COPY ./startup.sh /startup.sh

MAINTAINER

維護者信息

例如:MAINTAINER yanglin

ENTRYPOINT 

運行容器時執行的shell命令

例如:ENTRYPOINT ["/bin/bash","-c","/startup.sh"]

ENTRYPOINT /bin/bash -c '/startup.sh'

RUN

構建鏡像時運行的shell命令

例如:RUN ["yum", "install", "http"]

RUN yum install httpd

VOLUME

指定容器掛載點到宿主機自動生成的目錄或者其他容器

例如:VOLUME ["/path/to/dir"]

CMD

運行容器時執行的shell命令

例如:CMD ["-c","/startup.sh"]

CMD ["/usr/sbin/sshd","-D"]

CMD /usr/sbin/sshd -D

USER

為RUN,CMD,ENTRYPOINT執行命令指定運行用戶

例如:USER www

鏡像構建完成后,通過docker run運行容器時,可以通過-u參數來覆蓋所指定的用戶。

EXPOSE

指定於外界交互的端口,即容器在運行時監聽的端口

EXPOSE 8081 8082

WORKDIR

為RUN,CMD,ENTRYPOINT,COPY和ADD設置工作目錄

例如:WORKDIR /data

ENV 

設置容器內環境變量

例如:ENV MYSQL_ROOT_PASSWORD 123456

HEALTHCHECK

健康檢查

HEALTHCHECK --interval=5m --timeout=3s CMD curl -f http://localhost/ ||exit 1

ADD

拷貝文件或者目錄到鏡像,如果是URL或者壓縮包會自動下載或者自動解壓

例如:

ADD hom* /mydir/
ADD test relativeDir/

ARG

在構建鏡像時指定一些參數

例如:

FROM centos:6

ARG age=100

 

   1.RUN,CMD,ENTRYPOINT的區別

  A.RUN 指令:用於指定 docker build 過程中要運行的命令,可以寫多條
  B.CMD和ENTRYPOINT在運行容器時運行,只能寫一條,如果是寫多條,最后一條生效
  C.CMD 指令指定的程序可被 docker run 命令行參數中指定要運行的程序所覆蓋。
  D.ENTRYPOINT類似於 CMD 指令,但其不會被 docker run 的命令行參數指定的指令所覆蓋,如果運行 docker run 時使用了 --entrypoint 選項,
此選項的參數可當作要運行的程序覆蓋 ENTRYPOINT 指令指定的程序;

2.通過dockerfile構建Tomcat網站環境鏡像

FROM centos

MAINTAINER linzi

ADD apache-tomcat-8.5.37.tar.gz /usr/local/
ADD jdk-8u191-linux-x64.rpm /root/
RUN rpm -ivh /root/jdk-8u191-linux-x64.rpm
WORKDIR /usr/local/apache-tomcat-8.5.37/
ENTRYPOINT ["bin/catalina.sh","run"]
EXPOSE 8080

 3.通過dockerfile構建ssh服務器

FROM centos

MAINTAINER linzi

ENV ROOT_PASSWORD 123456
RUN yum install -y openssh-server
RUN echo $ROOT_PASSWORD |passwd --stdin root
RUN ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key
RUN ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key
CMD ["/usr/sbin/sshd","-D","&"]
EXPOSE 22

 


免責聲明!

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



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