Docker入门与应用实战之Dockerfile
1.Dockerfile格式
创新互联长期为上千多家客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为河北企业提供专业的做网站、成都做网站,河北网站改版等技术服务。拥有十余年丰富建站经验和众多成功案例,为您定制开发。
2. Dockerfile指令
3. Build镜像
4. 构建Nginx,PHP,Tomcat基础镜像
前提:上传文件dockerfile .zip和wordpress-4.9.4-zh_CN.tar.gz
[root@localhost first_stage]# unzip dockerfile\ .zip -d Dockerfile/ Archive: dockerfile .zip inflating: Dockerfile/Dockerfile-nginx inflating: Dockerfile/Dockerfile-php inflating: Dockerfile/Dockerfile-tomcat inflating: Dockerfile/nginx.conf inflating: Dockerfile/php-fpm.conf inflating: Dockerfile/php.ini
构建Nginx基础镜像:
[root@localhost first_stage]# sed -i 's/1.12.2/1.15.5/g' Dockerfile-nginx [root@localhost first_stage]# cat Dockerfile-nginx FROM centos:7 MAINTAINER www.dengaosky.com RUN yum install -y gcc gcc-c++ make \ openssl-devel pcre-devel gd-devel \ iproute net-tools telnet wget curl && \ yum clean all && \ rm -rf /var/cache/yum/* RUN wget http://nginx.org/download/nginx-1.15.5.tar.gz && \ tar zxf nginx-1.15.5.tar.gz && \ cd nginx-1.15.5 && \ ./configure --prefix=/usr/local/nginx \ --with-http_ssl_module \ --with-http_stub_status_module && \ make -j 4 && make install && \ rm -rf /usr/local/nginx/html/* && \ echo "ok" >> /usr/local/nginx/html/status.html && \ cd / && rm -rf nginx-1.15.5* && \ ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime ENV PATH $PATH:/usr/local/nginx/sbin COPY nginx.conf /usr/local/nginx/conf/nginx.conf WORKDIR /usr/local/nginx EXPOSE 80 CMD ["nginx", "-g", "daemon off;"] [root@localhost first_stage]# docker build -t nginx:v1 -f Dockerfile-nginx . [root@localhost first_stage]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE nginx v1 d25e10f6dc2f 3 minutes ago 369MB centos 7 9f38484d220f 4 months ago 202MB [root@localhost first_stage]#
构建PHP基础镜像:
[root@localhost first_stage]# cat Dockerfile-php FROM centos:7 MAINTAINER www.dengaosky.com RUN yum install epel-release -y && \ yum install -y gcc gcc-c++ make gd-devel libxml2-devel \ libcurl-devel libjpeg-devel libpng-devel openssl-devel \ libmcrypt-devel libxslt-devel libtidy-devel autoconf \ iproute net-tools telnet wget curl && \ yum clean all && \ rm -rf /var/cache/yum/* RUN wget http://docs.php.net/distributions/php-5.6.36.tar.gz && \ tar zxf php-5.6.36.tar.gz && \ cd php-5.6.36 && \ ./configure --prefix=/usr/local/php \ --with-config-file-path=/usr/local/php/etc \ --enable-fpm --enable-opcache \ --with-MySQL --with-mysqli --with-pdo-mysql \ --with-openssl --with-zlib --with-curl --with-gd \ --with-jpeg-dir --with-png-dir --with-freetype-dir \ --enable-mbstring --with-mcrypt --enable-hash && \ make -j 4 && make install && \ cp php.ini-production /usr/local/php/etc/php.ini && \ cp sapi/fpm/php-fpm.conf /usr/local/php/etc/php-fpm.conf && \ sed -i "90a \daemonize = no" /usr/local/php/etc/php-fpm.conf && \ mkdir /usr/local/php/log && \ cd / && rm -rf php* && \ ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime ENV PATH $PATH:/usr/local/php/sbin COPY php.ini /usr/local/php/etc/ COPY php-fpm.conf /usr/local/php/etc/ WORKDIR /usr/local/php EXPOSE 9000 CMD ["php-fpm"] [root@localhost first_stage]# docker build -t php:v1 -f Dockerfile-php . [root@localhost first_stage]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE php v1 402fe17abd8f 4 seconds ago 522MB nginx v1 d25e10f6dc2f 15 minutes ago 369MB centos 7 9f38484d220f 4 months ago 202MB [root@localhost first_stage]#
构建Tomcat基础镜像:
[root@localhost first_stage]# sed -i "s/8.0.52/8.0.46/g" Dockerfile-tomcat [root@localhost first_stage]# cat Dockerfile-tomcat FROM centos:7 MAINTAINER www.dengaosky.com ENV VERSION=8.0.46 RUN yum install java-1.8.0-openjdk wget curl unzip iproute net-tools -y && \ yum clean all && \ rm -rf /var/cache/yum/* #RUN wget http://mirrors.shu.edu.cn/apache/tomcat/tomcat-8/v${VERSION}/bin/apache-tomcat-${VERSION}.tar.gz && \ RUN wget http://archive.apache.org/dist/tomcat/tomcat-8/v${VERSION}/bin/apache-tomcat-${VERSION}.tar.gz && \ tar zxf apache-tomcat-${VERSION}.tar.gz && \ mv apache-tomcat-${VERSION} /usr/local/tomcat && \ rm -rf apache-tomcat-${VERSION}.tar.gz /usr/local/tomcat/webapps/* && \ mkdir /usr/local/tomcat/webapps/test && \ echo "ok" > /usr/local/tomcat/webapps/test/status.html && \ sed -i '1a JAVA_OPTS="-Djava.security.egd=file:/dev/./urandom"' /usr/local/tomcat/bin/catalina.sh && \ ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime ENV PATH $PATH:/usr/local/tomcat/bin WORKDIR /usr/local/tomcat EXPOSE 8080 CMD ["catalina.sh", "run"] [root@localhost first_stage]# docker build -t tomcat:v1 -f Dockerfile-tomcat . [root@localhost first_stage]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE tomcat v1 118b74bae95f 52 seconds ago 427MB php v1 402fe17abd8f 55 minutes ago 522MB nginx v1 d25e10f6dc2f About an hour ago 369MB centos 7 9f38484d220f 4 months ago 202MB [root@localhost first_stage]#
5. 快速搭建LNMP网站平台
快速部署LNMP网站平台 1、自定义网络 docker network create lnmp 2、创建Mysql容器 docker run -d \ --name lnmp_mysql \ --net lnmp \ --mount src=mysql-vol,dst=/var/lib/mysql \ -e MYSQL_ROOT_PASSWORD=123456 -e MYSQL_DATABASE=wordpress mysql:5.7 --character-set-server=utf8 3、创建PHP容器 docker run -d --name lnmp_php --net lnmp --mount src=wwwroot,dst=/wwwroot php:v1 4、创建Nginx容器 docker run -d --name lnmp_nginx --net lnmp -p 88:80 \ --mount type=bind,src=$(pwd)/nginx.conf,dst=/usr/local/nginx/conf/nginx.conf --mount src=wwwroot,dst=/wwwroot nginx:v1 5、以wordpress博客为例 https://cn.wordpress.org/wordpress-4.9.4-zh_CN.tar.gz
实战演练:
创建自定义网络 [root@localhost ~]# docker network create lnmp e206a2a632cf78430fc6c32d6f50a810c0a8f3ad8ad32287b354cad32de04aac [root@localhost ~]# [root@localhost ~]# docker network ls NETWORK ID NAME DRIVER SCOPE 67d8c68783da bridge bridge local 2b6c8c029f58 host host local e206a2a632cf lnmp bridge local fc002cd520b3 none null local [root@localhost ~]# 查看创建的容器 [root@localhost ~]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES [root@localhost ~]# 查看创建的卷: [root@localhost ~]# docker volume ls DRIVER VOLUME NAME [root@localhost ~] 创建Mysql容器 docker run -d \ --name lnmp_mysql \ --net lnmp \ --mount src=mysql-vol,dst=/var/lib/mysql \ -e MYSQL_ROOT_PASSWORD=123456 -e MYSQL_DATABASE=wordpress mysql:5.7 --character-set-server=utf8 创建PHP容器 docker run -d --name lnmp_php --net lnmp --mount src=wwwroot,dst=/wwwroot php:v1 创建Nginx容器 docker run -d --name lnmp_nginx --net lnmp -p 88:80 \ --mount type=bind,src=$(pwd)/nginx.conf,dst=/usr/local/nginx/conf/nginx.conf --mount src=wwwroot,dst=/wwwroot nginx:v1 #保证当前目录下有nginx.conf文件 挂载后会自动创建本地卷mysql-vol、wwwroot [root@localhost first_stage]# docker volume ls DRIVER VOLUME NAME local mysql-vol local wwwroot [root@localhost first_stage]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES e09f16c2e561 nginx:v1 "nginx -g 'daemon of…" 55 seconds ago Up 54 seconds 0.0.0.0:88->80/tcp lnmp_nginx cc9ca12735fd php:v1 "php-fpm" 4 minutes ago Up 4 minutes 9000/tcp lnmp_php 22217c6c82ce mysql:5.7 "docker-entrypoint.s…" 5 minutes ago Up 5 minutes 3306/tcp, 33060/tcp lnmp_mysql [root@localhost first_stage]# 创建静态测试页面: [root@localhost first_stage]# ls /var/lib/docker/volumes/wwwroot/_data/ [root@localhost first_stage]# [root@localhost first_stage]# echo "Hello,World.
">/var/lib/docker/volumes/wwwroot/_data/index.html 浏览器访问: http://192.168.16.121:88/ 显示内容为:Hello,World. 创建动态测试页面: [root@localhost first_stage]# echo "">/var/lib/docker/volumes/wwwroot/_data/test.php 浏览器访问: http://192.168.16.121:88/test.php 显示内容为:Hello,World. 部署wordpress博客: [root@localhost first_stage]# wget https://cn.wordpress.org/wordpress-4.9.4-zh_CN.tar.gz [root@localhost first_stage]# rm -rf /var/lib/docker/volumes/wwwroot/_data/* [root@localhost first_stage]# tar xf wordpress-4.9.4-zh_CN.tar.gz [root@localhost first_stage]# mv wordpress/* /var/lib/docker/volumes/wwwroot/_data/ 浏览器访问: http://192.168.16.121:88/index.php 显示内容为:WordPress部署向导. 数据库名:wordpress 用户名:root 密码:123456 数据库主机:lnmp_mysql 表前缀:wp_ 提交 手工创建wp-config.php文件/var/lib/docker/volumes/wwwroot/_data/wp-config.php 现在安装 站点标题:Jacky 用户名:admin 密码:123456 确认密码:勾选“确认使用弱密码” 您的电子邮件:admin@123.com 安装WordPress
WordPress安装向导如下所示:
到此为止,WordPress博客已搭建成功了。
文章名称:Docker入门与应用实战之Dockerfile
转载注明:http://scyanting.com/article/gcgcej.html