千家信息网

Docker入门与应用实战之Dockerfile

发表于:2024-11-30 作者:千家信息网编辑
千家信息网最后更新 2024年11月30日,1.Dockerfile格式2. Dockerfile指令3. Build镜像4. 构建Nginx,PHP,Tomcat基础镜像前提:上传文件dockerfile .zip和wordpress-4.9
千家信息网最后更新 2024年11月30日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安全错误 数据库的锁怎样保障安全 网络安全十个一六个好 qt助手服务器 吉林正规软件开发生产厂家 网络安全工作述职 维护网络安全的工作人的心理疏导 多少钱的服务器可以玩游戏 山西省航信安全接入服务器 石城手机软件开发在线咨询 戴尔服务器电池拆了之后有什么 温州数据网络技术哪家好 江阴正规软件开发诚信经营 警告此服务器不安全 网络安全技术专业的就业方向 广州微信软件开发教程 南宁广科网络技术 浪潮服务器怎么用光盘进pe系统 马鞍山网站建设软件开发 网络服务器扩容 软件工程是计算机网络技术类 网络安全的国际现状分析 户籍管理数据库 SQL 导入新数据库 大连埃森哲软件开发实习 绝地求生怎么总是服务器断开 公钥和私钥哪个放在服务器 db2数据库大于小于号 徐汇区自动化网络技术创造辉煌 r730服务器支持cpu吗 广州台式电脑服务器自动生产线 mimic数据库大小
0