Docker入门与应用实战之Dockerfile
发表于:2025-01-26 作者:千家信息网编辑
千家信息网最后更新 2025年01月26日,1.Dockerfile格式2. Dockerfile指令3. Build镜像4. 构建Nginx,PHP,Tomcat基础镜像前提:上传文件dockerfile .zip和wordpress-4.9
千家信息网最后更新 2025年01月26日Docker入门与应用实战之Dockerfile
1.Dockerfile格式
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-nginxFROM centos:7MAINTAINER www.dengaosky.comRUN 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/localtimeENV PATH $PATH:/usr/local/nginx/sbinCOPY nginx.conf /usr/local/nginx/conf/nginx.confWORKDIR /usr/local/nginxEXPOSE 80CMD ["nginx", "-g", "daemon off;"][root@localhost first_stage]# docker build -t nginx:v1 -f Dockerfile-nginx .[root@localhost first_stage]# docker imagesREPOSITORY TAG IMAGE ID CREATED SIZEnginx v1 d25e10f6dc2f 3 minutes ago 369MBcentos 7 9f38484d220f 4 months ago 202MB[root@localhost first_stage]#
构建PHP基础镜像:
[root@localhost first_stage]# cat Dockerfile-php FROM centos:7MAINTAINER www.dengaosky.comRUN 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/localtimeENV PATH $PATH:/usr/local/php/sbinCOPY php.ini /usr/local/php/etc/COPY php-fpm.conf /usr/local/php/etc/WORKDIR /usr/local/phpEXPOSE 9000CMD ["php-fpm"][root@localhost first_stage]# docker build -t php:v1 -f Dockerfile-php .[root@localhost first_stage]# docker imagesREPOSITORY TAG IMAGE ID CREATED SIZEphp v1 402fe17abd8f 4 seconds ago 522MBnginx v1 d25e10f6dc2f 15 minutes ago 369MBcentos 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:7MAINTAINER www.dengaosky.comENV VERSION=8.0.46RUN 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/localtimeENV PATH $PATH:/usr/local/tomcat/binWORKDIR /usr/local/tomcatEXPOSE 8080CMD ["catalina.sh", "run"][root@localhost first_stage]# docker build -t tomcat:v1 -f Dockerfile-tomcat .[root@localhost first_stage]# docker imagesREPOSITORY TAG IMAGE ID CREATED SIZEtomcat v1 118b74bae95f 52 seconds ago 427MBphp v1 402fe17abd8f 55 minutes ago 522MBnginx v1 d25e10f6dc2f About an hour ago 369MBcentos 7 9f38484d220f 4 months ago 202MB[root@localhost first_stage]#
5. 快速搭建LNMP网站平台
快速部署LNMP网站平台1、自定义网络 docker network create lnmp2、创建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 lnmpe206a2a632cf78430fc6c32d6f50a810c0a8f3ad8ad32287b354cad32de04aac[root@localhost ~]# [root@localhost ~]# docker network lsNETWORK ID NAME DRIVER SCOPE67d8c68783da bridge bridge local2b6c8c029f58 host host locale206a2a632cf lnmp bridge localfc002cd520b3 none null local[root@localhost ~]# 查看创建的容器[root@localhost ~]# docker ps -aCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES[root@localhost ~]#查看创建的卷:[root@localhost ~]# docker volume lsDRIVER 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 lsDRIVER VOLUME NAMElocal mysql-vollocal wwwroot[root@localhost first_stage]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMESe09f16c2e561 nginx:v1 "nginx -g 'daemon of…" 55 seconds ago Up 54 seconds 0.0.0.0:88->80/tcp lnmp_nginxcc9ca12735fd php:v1 "php-fpm" 4 minutes ago Up 4 minutes 9000/tcp lnmp_php22217c6c82ce 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博客已搭建成功了。
容器
镜像
基础
密码
内容
博客
文件
浏览器
浏览
向导
平台
数据
数据库
用户
用户名
网站
网络
页面
测试
实战
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
校园生活软件开发财务分析
蕨墙村数据库
服务器磁盘坏了怎么找到
终章服务器崩溃后怎么处理
与软件开发有关的技术术语
恒生互联网科技业指数编制
娃娃机软件开发公司
软件开发总监招聘条件
软件开发kpi绩效考核模板
金融软件开发前景如何
无线传感器网络技术 实验
数据库的系统开发设计思想
爱奇艺云服务器是什么原因
天 服务器
notion的数据库技术
护苗网络安全课开学第一讲
振动测点数据库建立
网络技术开发销售业务怎么做
keras 数据库
网络安全教育第三节可信吗
手机扫码软件开发
临夏市网络安全宣传周活动
加强网络安全防范和应急救援
福建省漳州市软件开发公司
数据库bat备份文件还原
海康威视服务器怎么设置无线网
怎么把mymql数据库文件
关于宣传网络安全知识的小品
服务器做系统怎么做
网络安全和云计算哪个更好学