指令 | 描述 | 指令 | 描述 |
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/ |
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