一般呢,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. Ubuntu瞎胡搞

    ubutnu的几个必不可少的软件: 1.Guake,超级方便的终端 2.Unity tweak tool 3.VLC,本地视频播放器 4.MyPint,简单画图软件 5.GIMP,PS工具 Subli ...

  2. WEB服务器、网站、域名、IP地址、DNS服务器之间的关系

    域名首先指向你的服务器,这个过程叫解析.  服务器分成好多小块,每小块叫一个空间或者一个虚拟主机.  所以当你输入你的域名以后,服务器收到你域名的访问信息,但不知道要打开这么多个小块中的那一个.所以要 ...

  3. 使用mspaint查看图片像素

    图片打码服务,要求对图像验证码进行切图,即具体知道像素的位置,网上搜了yhb-chi但下载不方便. 就想着看看mspaint可不可以,将图片拖到mspaint中: 显示了整张图片的像素大小(100X4 ...

  4. $.ajax、$.post[转]

    jQuery.post( url, [data], [callback], [type] ) :使用POST方式来进行异步请求 参数: url (String) : 发送请求的URL地址. data ...

  5. OnDeserializedAttribute 不能作用于 Xml Serialization 上

    在做测试的时候习惯用xml serialization观察结果.想当然的认为OnDeserialized Attribute 可以同样的使用,但是其实Xml Serialization 并没有实现相对 ...

  6. Hibernate课程 初探一对多映射3-4 双向多对一的测试

    1 单向多对一和单向多对一的区别 比如部门和员工,一个部门下有很多员工,如果只查一个员工属于哪个部门,就用单向的,如果还要查一个部门下的所有员工,就用双向的. 2 双向多对一的配置 除了单向xml和双 ...

  7. jQuery中的CSS-DOM操作

    html代码 <p style="color:blue;">武汉PHP培训-武汉长乐教育</p> css()方法 $("p").css( ...

  8. Vue编译时写在style中的路径问题

    写在vue文件里面的style样式,在添加例如背景图片的时候,如果用的是相对路径,那么build出来的css文件的路径将会出错,导致找不到图片. 通过查找资料,在https://segmentfaul ...

  9. css改变透明背景png图片的图标颜色

    HTML: <p><strong>原始图标</strong></p> <i class="icon icon-del"> ...

  10. 修改Android系统关机动画

    文件路径:frameworks\base\services\core\java\com\android\server\power\ShutdownThread.java 在beginShutdownS ...