一,dockerfile指令
二,Build镜像命令
build -t #镜像名称 -f #指定Dockerfile文件位置 示例: docker build . docker build -t kk/myapp . docker build -t kk/myapp -f /path/Dockerfile /path
三,构建PHP镜像
$ mkdir php $ cd php/ $ vi Dockerfile FROM centos:7 #基础镜像 MAINTAINER cong RUN yum install -y gcc gcc-c++ make gd-devel libxml2-devel libcurl-devel libjpeg-devel libpng-devel openssl-devel ADD php-5.6.31.tar.gz /tmp/ #ADD具有下载(url链接) 解压(压缩包) 拷贝功能,本地到镜像中的目录 #如果这里些了user abc 下面的所有操作都会在这个命令下操作 RUN cd /tmp/php-5.6.31 && ./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc --with-mysql --with-mysqli --with-openssl --with-zlib --with-curl --with-gd --with-jpeg-dir --with-png-dir --with-iconv --enable-fpm --enable-zip --enable-mbstring && make -j 4 && 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" /usr/local/php/etc/php-fpm.conf && sed -i "21a daemonizer=no" /usr/local/php/etc/php-fpm.conf COPY php.ini /usr/local/php/etc RUN rm -rf /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"] #docker run -itd image-name abc(这边加了abc会覆盖,变成CMD["abc"]) #ENTRYPOINT 等于上面CMD,但是不会覆盖CMD。另外覆盖CMD需要在run后面用--entrypoint 来覆盖 $ ls php-5.6.31.tar.gz Dockerfile php.ini $ docker build -t php:v1 . #进到在这个目录下执行构建一个镜像 或 $ docker image build -t nginx:v1 -f Dockerfile . # -f 默认就是Dockerfile,最后 . 是上下文
四,构建nginx镜像
$ mkdir nginx $ cd nginx/ $ vi Dockerfile FROM centos:7 #基础镜像 MAINTAINER cong RUN yum install -y gcc gcc-c++ make openssl-devel pcre-devel ADD nginx-1.12.1.tar.gz /tmp #ADD具有下载(url链接) 解压(压缩包) 拷贝功能,本地到镜像中的目录 #如果这里些了user abc 下面的所有操作都会在这个命令下操作 RUN cd /tmp/nginx-1.12.1 && ./configure --prefix=/usr/local/nginx && make -j 4 && make install RUN rm -rf /tmp/nginx-1.12.1* && yum clean all COPY nginx.conf /usr/local/nginx/conf #将当前目录的nginx.conf文件拷贝到容器的/usr/local/nginx/conf目录 WORKDIR /usr/local/nginx EXPOSE 80 #声明容器服务端口 CMD ["./sbin/nginx","-g","daemon off;"]
$ ls
nginx-1.12.1.tar.gz Dockerfile nginx.conf
$ docker image build -t nginx:v1 .
五,构建php环境
1.自定义网络 docker network create lnmp 2.创建PHP容器 docker run -itd --name lnmp_php --net lnmp --mount type=bind,src=/app/wwwroot/,dst=/usr/local/nginx/html php:v1 3.创建Nginx容器 docker run -itd --name lnmp_nginx --net lnmp -p 888:80 --mount type=bind,src=/app/wwwroot/,dst=/usr/local/nginx/html nginx:v1 4.创建Mysql容器 docker run -itd --name lnmp_mysql --net lnmp -p 3306:3306 --mount src=mysql-vol,dst=/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 mysql --character-set-server=utf8
六,构建tomcat环境
$ mkdir tomcat $ cd tomcat/ $ vi Dockerfile FROM centos:7 #基础镜像 MAINTAINER cong ADD jdk-8u45-linux-x64.tar.gz /usr/local #ADD具有下载(url链接) 解压(压缩包) 拷贝功能,本地到镜像中的目录 ENV JAVA_HOME /usr/local/jdk1.8.0_45 ADD apache-tomcat-8.0.46.tar.gz /usr/local COPY server.xml /usr/local/apache-tomcat-8.0.46/conf RUN rm -f /usr/local/*.tar.gz WORKDIR /usr/local/apache-tomcat-8.0.46 EXPOSE 8080 #声明容器服务端口 ENTRYPOINT ["./bin/catalina.sh","run"]
$ ls
jdk-8u45-linux-x64.tar.gz Dockerfile server.xml
#构建镜像 $ docker image build -t tomcat:v1 . #创建容器,/app/webapps目录需要先创建 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
#创建默认工程名目录并放代码
$ ls /app/webapps/
$ mkdir /app/webapps/ROOT
vi /app/webapps/ROOT/index.html
.