一般呢,docker构建镜像容器的方式有两种:一种是pull dockerhub仓库里面的镜像,一种是使用Dockerfile自定义构建镜像。

很多时候,公司要求的镜像并不一定符合dockerhub仓库里面的镜像,这时候我们就要自己构建镜像了,通过编辑dockerfile文件,来实现我们对镜像的要求。

无论是服务器更换或者是增加新的网站节点,只要把这个镜像放进私有仓库,新的服务器拉取到自己本地就可以使用,是不是很方便呢?

因为很多公司的网站平台是基于php语言来写的,我就举个例子:

构建一个wordpress的php网站环境的镜像。

镜像构成:Httpd、MySQL、PHP、wordpress。
首先呢,先写一个简单的控制脚本:

 [root@smbands~]#vi start.sh
 service httpd start #开启httpd服务。
 service mysqld start #开启MySQL。
 mysqladmin -uroot -p $MYSQL_ROOT_PASSWORD 更改默认MySQL登录密码。
 tail -f #持续运行

编写Dockerfile文件

 [root@smbands~]#vi Dockerfile #创建一个空Dockerfile文件。 

 FROM centos: #基于哪个操作系统
 MAINTAINER Smbands #作者名称
 RUN yum -y install httpd php php-gd php-mysql mysql mysql-server #使用yum安装一些必要的服务。
 ENV MYSQL_ROOT_PASSWORD  #使用变量给MySQL设置密码。
 RUN echo "" > /var/www/html/index.php #创建php测试页。
 ADD start.sh /start.sh #添加一个sh脚本。
 RUN chmod +x /start.sh #给脚本赋予可执行权限。

 ADD wordpress--zh_CN.tar.gz /var/www/html #将wordpress压缩包下载到本地,并解压到/var/www/html目录。
 COPY wp-config-simple.php wp-config.php #将wordpress解压后的wp-config-simple.php文件复制一份重命名为wp-config.php。
 COPY wp-config.php /var/www/html/wordpress #将文件拷贝到网站发布路径。
 VOLUME ["/var/lib/mysql"] #将MySQL数据库目录挂载到容器。

 CMD /start.sh #执行脚本
 EXPOSE   #开放  和3306端口

构建镜像容器
  [root@smbands~]#docker build -t wordpress:v1 Dockerfile的路径 #说明一下 -t 给镜像命名 wordpress:v1 镜像名:TAG 。 
等10分钟左右的时间镜像就可以构建完成。
然后你可以在镜像列表里面看到你构建的wordpress:v1的镜像

 [root@smbands~]#docker images
 REPOSITORY   TAG      IMAGE      ID     CREATED       SIZE
 wordpress     v1   29364aa4074d About   an hour ago   MB

启动镜像

 [root@smbands~]# docker run -itd --name wordpress -p : wordpress:v1
 [root@smbands~]#docker ps
 CONTAINER          ID         IMAGE      COMMAND      CREATED           STATUS        PORTS                                     NAMES
 fe55c05eb309 wordpress:v1 ->/tcp, /tcp    wordpress

启动容器后打开浏览器访问宿主机的IP就可以看到效果了。
把镜像放到私有仓库,今后的工作中,如果公司服务器新增节点或者更换服务器,直接将镜像拉取过来就可以直接使用了。

Docker自学纪实(五) 使用Dockerfile构建php网站环境镜像的更多相关文章

  1. Docker学习(六)Dockerfile构建自定义镜像

    Docker学习(六)Dockerfile构建自定义镜像 前言 通过前面一篇文章可以知道怎么去使用一个镜像搭建服务,但是,如何构造自己的一个镜像呢,docker提供了dockerfile可以让我们自己 ...

  2. Docker在Centos下使用Dockerfile构建远程Tomcat和Jenkins镜像

    镜像构建准备环境原料 构建CentOS Docker tomcat镜像 Dockerfile文件内容: FROM centos:latest MAINTAINER boonya <boonya@ ...

  3. Docker中使用多阶段Dockerfile构建容器镜像image(镜像优化)

    使用多阶段构建 预计阅读时间: 6分钟 多阶段构建是守护程序和客户端上需要Docker 17.05或更高版本的新功能.多阶段构建对于那些努力优化Dockerfiles同时使其易于阅读和维护的人来说非常 ...

  4. Docker笔记(五):整一个自己的镜像

    原文地址:http://blog.jboost.cn/2019/07/17/docerk-5.html 获取镜像的途径有两个,一是从镜像仓库获取,如官方的Docker Hub,二是自定义.上文已经介绍 ...

  5. docker dockerfile构建自己的tomcat镜像

    文件 1.apache-tomcat-8.5.24.tar.gz, jdk-8u151-linux-x64.tar.gz Dockerfile文件: FROM centosWORKDIR /usrCO ...

  6. Docker自学纪实(六)搭建docker私有仓库

    docker的镜像仓库分两种:一种是从官方公有仓库拉取:还有就是自己搭建私有仓库.官方的镜像仓库是面对整个应用市场的:私有仓库一般用于公司内部,就是公司项目自身所需的镜像.搭建私有仓库有什么好处?私有 ...

  7. Docker自学纪实(四)搭建LNMP部署wordpress

    我们在工作中最常用的就是LNMP网站平台 这个架构呢,是整个公司网站的核心 如果对于访问量较小的网站,可以直接在服务器上面部署 而如果是访问量很大的网站,那负载就是个很大的问题. 要么需要再买很多服务 ...

  8. Docker自学纪实(三)Docker容器数据持久化

    谈起数据卷 我一直觉得是个枯燥无聊的话题 但是通过今天的实操和阅读 我发现其实并不是 其实就像走夜路 没有光明,第一次都是恐惧 但是如果走的次数多了 或者静下心来去克制恐惧 也许就会驾轻就熟或者等到黎 ...

  9. Docker自学纪实(二)Docker基本操作

    安装docker 以CentOS7为例: 安装:yum -y install docker 启动:systemctl start docker 设置开机自启:systemctl enable dock ...

随机推荐

  1. Tips In C

    C语言中的使用操作 宏定义时使用do while防止语句的分离, 但是不使用与需要有返回值的语句, 这个时候可以参考第二条 宏定义时使用({}), ()加上{}的方式, 在代码中填写逻辑算法, 最后的 ...

  2. php一种面向对象的语言,那么什么是面向对象呢?

    php一种面向对象的语言,那么什么是面向对象呢? 传统的面向过程的编程思想: 相信很多人第一次接触编程都是c语言,c语言就是非常典型的面向过程的编程语言,将要实现的功能描述为一个从开始到结束的连续的“ ...

  3. SublimeText插件eslint : 语法检测

    参考: http://www.tuicool.com/articles/faANRvj 安装之后的效果: 误用了 = ,在文件保存时就会被提示,直接顺手改掉就行了,方便的不行 步骤1:Sublime集 ...

  4. Dojo 学习笔记 之 Dojo hitch&partial

    原文: http://dojotoolkit.org/documentation/tutorials/1.10/hitch/index.html 版本: Dojo 1.10 为了更好地使用JavaSc ...

  5. 工作流常使用API

    记录实际开发中常使用到的API CreateProcess 在工作流开始之前,创建一个新的工作流 Wf_engine.CreateProcess (itemtype in varchar2,    - ...

  6. 【起航计划 006】2015 起航计划 Android APIDemo的魔鬼步伐 05 App->Activity->Custom Title 自定义标题栏

    Android UI缺省的标题栏由android:label 定义,显示在屏幕左上角,Android允许Activity自定义标题栏,使用自定义Layout重新设置标题栏,比如实现Windows Mo ...

  7. u-boot分析(六)----时钟初始化

    u-boot分析(六) 上篇博文我们按照210的启动流程,分析到了关闭看门狗,今天我们继续按照u-boot的启动流程进行分析,今天我们会主要分析时钟的初始化. 今天我们会用到的文档: 1.       ...

  8. Azure杯年会Cosplay大赛,速来围观!

    又是一年年会时,正值各家公司红人纷纷登场之际,Azure 自然也不会缺席.我们今年的主题是:Azure 杯年会 Cosplay,秀出你最爱的角色! 在过去的一年中,Azure 智能云取得了长足的发展, ...

  9. ssh配置解释

    http://vbird.dic.ksu.edu.tw/linux_server/0310telnetssh_2.php /etc/ssh/sshd_config Port 29922 #Addres ...

  10. C#实现屏幕指定区域截屏

    //string Opath = @"C:/Picture";            //if (Opath.Substring(Opath.Length - 1, 1) != @ ...