一般呢,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. MahApps.Metro控件更換微軟視窗主題

    先來看一下微軟默認的視窗主題(左:Window)與MahApps.Metro的視窗主題(右:MetroWindow), Window   MetroWindow   MetroWindow似乎美觀多了 ...

  2. apache配置多端口对应多个虚拟目录

    经常需要在本地调试网站,却又不喜欢在http://localhost/网站的文件夹名 且几个比较重要的项目我想直接用端口号以示区分,想达到的效果如下: http://localhost/ 默认80端口 ...

  3. PHP编码的规范性

         为了提高工作效率,保证开发的有效性和合理性,并最大程度提高程序代码的可读性和可重复利用性,提高沟通效率,需要一份代码编辑规范.         一.文件标记:            1.所有 ...

  4. OAuth2.0和企业内部统一登录,token验证方式,OAuth2.0的 Authorization code grant 和 Implicit grant区别

    统一登录是个很多应用系统都要考虑的问题,多个项目的话最好前期进行统一设计,否则后面改造兼容很麻烦: cas认证的方式:新公司都是老项目,用的是cas认证的方式,比较重而且依赖较多,winform的项目 ...

  5. Active Directory 域服务对象

    局域网计算机控制中心 可以在DC上控制所有局域网资源(计算机 .用户.设备) 大中型企业管理必备. 最后,它还可以让开发人员集成LDAP身份认证,使用域账号登录应用. 也就是说,此企业的所有系统,都可 ...

  6. HttpFlexSession注册失败的怪问题

    web.xml中已经注册了HttpFlexSession <listener> <listener-class>flex.messaging.HttpFlexSession&l ...

  7. #include stdio.h(7)

    #include <stdio.h> int main() { //***********一.循环语句*************** //什么叫做循环: //重复的做某件事情,重复的执行一 ...

  8. (生产)animate.css 动画库

    官网:https://daneden.github.io/animate.css/ Animate.css是一个有趣的,跨浏览器的css3动画库 用法 首先引入animate css文件:    &l ...

  9. DXperience Winforms新版本13.2功能预览

    据界面控件厂商 DevExpress 官方最新消息,大家期盼已久的DXperience 13.2终于要面世了.今天在这里提前跟大家提前披露一下DXperience Winforms 13.2的一些精彩 ...

  10. 安装office提示Office 16 Click-to-Run Extensibility Component

    今天安装office时,提示Office 16 Click-to-Run Extensibility Component或者Office 15 Click-to-Run Extensibility C ...