FROM:構建新的鏡像是基於哪一個鏡像,例如:FROM centos:6
MAINTAINER:鏡像維護者姓名或郵箱地址,例如:MAINTAINER goldenyin
RUN:構建鏡像時運行的shell命令,例如:php
RUN ["yum","install","https"] RUN yum install -y httpd
CMD:運行容器時執行的shell命令,例如:html
CMD ["-c","/start.sh"] CMD ["/usr/sbin/sshd","-D"] CMD /usr/sbin/sshd -D
EXPOSE:聲明容器運行的服務端口,例如:EXPOSE 80 443
EVN:設置容器內環境變量,例如:ENV MYSQL_ROOT_PASSWORD 123456
ADD:拷貝文件或目錄到鏡像,若是是URL或壓縮包會自動下載或自動解壓,例如:java
ADD <src>...<dest> ADD ["<src>",...,"<dest>"] ADD https://xxx.com/xxx.tar.gz /var/www/html ADD xxx.tar.gz /var/www/html
COPY:拷貝文件或目錄到鏡像,用法與ADD相似,例如:COPY ./start.sh /start.sh
ENTRYPOINT:運行容器時執行的shell命令,例如mysql
ENTRYPOINT ["/bin/bash","-c","/start.sh"] ENTRYPOINT /bin/bash -c '/start.sh'
VOLUME:指定容器掛載點到宿主機自動生成的目錄或其餘容器,例如:VOLUME ["/var/lib/mysql"]
USER:爲RUN、CMD和ENTRYPOINT執行命令指定運行用戶,USER
USER goldenyin
WORKDIR:爲RUN、CMD、ENTRYPOINT、COPY和ADD設置工做目錄,例如:
WORKDIR /data
HEALTHCHECK:健康檢查,例如:
HEALTHCHECK --interval=5m --timeout=3s --retries=3 CMD curl -f http://localhost/ ||exit 1
ARG:在構建鏡像時指定一些參數,例如:
FROM centos:6 ARG user \#ARG user=root USER $user #docker build --build-arg user=goldenyin Dockerfile.
[root@docker test_dackerfile]# pwd
/root/test_dackerfile
[root@docker test_dackerfile]# ls
Dockerfile php-5.6.31.tar.gz
[root@docker test_dackerfile]# cat Dockerfilenginx
FROM centos:7 MAINTAINER www.xxx.com RUN yum install -y gcc gcc-c++ make gd-devel libxml2-devel libcurl-devel libjpeg-devel libpng-devel openssl-devel openssl libmcrypt libmcrypt-devel mcrypt mhash php-mcrypt ADD php-5.6.31.tar.gz /tmp/ RUN cd /tmp/php-5.6.31 && \ ./configure --prefix=/usr/local/php \ --with-config-file-path=/usr/local/php/etc \ --with-gd --with-png-dir=/usr/local/libpng \ --with-jpeg-dir=/usr/local/jpeg \ --with-freetype-dir=/usr/local/freetype \ --with-xpm-dir=/usr/ \ --with-zlib-dir=/usr/local/zlib \ --with-iconv --enable-libxml --enable-xml --enable-bcmath --enable-shmop --enable-sysvsem --enable-inline-optimization --enable-opcache --enable-mbregex --enable-fpm --enable-mbstring --enable-ftp --enable-gd-native-ttf \ --with-openssl --enable-pcntl --enable-sockets \ --with-xmlrpc --enable-zip --enable-soap \ --without-pear \ --with-gettext --enable-session \ --with-curl --enable-ctype && \ make -j4 && \ make install && \ cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf && \ sed -i "s/127.0.0.1/0.0.0.0/g" /usr/local/php/etc/php-fpm.conf && \ sed -i "21a \daemonize = no" /usr/local/php/etc/php-fpm.conf && \ rm -fr /tmp/php-5.6.31* && yum clean all WORKDIR /usr/local/php EXPOSE 9000 CMD ["./sbin/php-fpm","-c","/usr/local/php/etc/php-fpm.conf"]
usage:docker image build [OPTIONS] PATH | URL -
options:
-t,--tag list #鏡像名稱
-f,--file string #指定Dockerfile文件位置
示例:
docker build .
docker build -t shykes/myapp .
docker build -t shykes/myapp -f /path/Dockerfile /path
[root@docker test_dackerfile]# docker image build -t php:v1 .
建立成功返回以下信息:c++
Removing intermediate container 3ec421e076d7 ---> b4994afab959 Step 6/8 : WORKDIR /usr/local/php ---> Running in 283ac6a479aa Removing intermediate container 283ac6a479aa ---> a65d38cbec2a Step 7/8 : EXPOSE 9000 ---> Running in 70859693269d Removing intermediate container 70859693269d ---> 77c0dd4f6d02 Step 8/8 : CMD ["./sbin/php-fpm","-c","/usr/local/php/etc/php-fpm.conf"] ---> Running in e5671de5e354 Removing intermediate container e5671de5e354 ---> c956f56431e4 Successfully built c956f56431e4 Successfully tagged php:v1
docker network create lnmp
docker run -itd \ --name lnmp_php \ --net lnmp \ --mount type=bind,src=/app/wwwroot/,dst=/usr/local/nginx/html \ php:v1
docker run -itd \ --name lnmp_nginx \ --net lnmp \ -p 888:80 \ --mount type=bind,src=/app/wwwroot/,dst=/usr/local/nginx/html \ nginx:v1
docker run -itd \ --name lnmp_mysql \ --net lnmp \ -p 3306:3306 \ --mount src=mysql-vol,dsr=/var/lib/mysql \ -e MYSQL_ROOT_PASSWORD=123456 \ mysql --character-set-server=utf-8
FROM centos:77 MAINTAINER www.xxx.com ADD jdk-8u45-linux-x64.tar.gz /usr/local ENV JAVA_HOME /usr/local/jdk1.8.0_45 ADD apache-tomcat-8.0.46.tar.gz /usr/local RUN rm -f /usr/local/*.tar.gz WORKDIR /usr/local/apache-tomcat-8.0.46 EXPOSE 8080 ENTRYPOINT ["./bin.catalina.sh","run"]
docker run -itd \ --name=tomcat \ -p 8080:8080 \ --mount type=bind,src=/app/webapps/,dst=/usr/local/apache-tomcat-8.0.46/webapps \ tomcat:v1