在Docker中,一般遵循一个Docker只运行一个应用,这样方便维护。

首先需要将centos 镜像pull到本地,并搭建本地yum仓库

yum仓库地址:http://192.168.2.11:8000  这里使用阿里yum和163yum都可以。

[root@node1 test]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
docker.io/centos latest 904d6c400333 weeks ago 196.7 MB

编写Dockerfile文件

[root@node1 web-Dockerfile]# vim Dockerfile 

FROM centos
MAINTAINER hukey
RUN rm -rf /etc/yum.repos.d/*
RUN echo -e "[yum]\nname = yum\ngpgcheck = 0\nbaseurl = http://192.168.2.11:8000" > /etc/yum.repos.d/yum.repo
RUN yum install httpd php php-mysql php-mbstring -y && yum clean all
EXPOSE 80
CMD ["/usr/sbin/httpd","-f","/etc/httpd/conf/httpd.conf","-DFOREGROUND"]

尝试执行Dockerfile文件

[root@node1 web-Dockerfile]# docker build -f Dockerfile -t web:centos7 .
...
...
Step : EXPOSE
---> Running in cd581ad95fb0
---> 368d9fc0b1ce
Removing intermediate container cd581ad95fb0
Step : CMD /usr/sbin/httpd -f /etc/httpd/conf/httpd.conf -DFOREGROUND
---> Running in 34e0a903d8b5
---> 07d76f84111c
Removing intermediate container 34e0a903d8b5
Successfully built 07d76f84111c

docker每执行完成一行RUN 语句就会生成一个镜像文件,如果还有RUN指令执行,就会删除原来的镜像文件,并创建一个新的镜像文件,因此在编写Dockerfile时,要简练。

通过生成的镜像文件运行一个容器

[root@node1 web-Dockerfile]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
web centos7 07d76f84111c minutes ago MB
docker.io/centos latest 904d6c400333 weeks ago 196.7 MB
[root@node1 web-Dockerfile]# docker run -d -p : -v /myweb/:/var/www/html/ --name web web:centos7   # -v 本机目录/myweb 挂载到容器内的/var/www/html目录

通过查看,我们已经成功的创建了一个web容器。

[root@node1 web-Dockerfile]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
7d5c54ba0cf1 web:centos7 "/usr/sbin/httpd -f /" seconds ago Up seconds 0.0.0.0:->/tcp web
[root@node1 web-Dockerfile]# docker port web
/tcp -> 0.0.0.0:

测试访问:
http://192.168.2.11

web 服务已经搭建完毕,接下来是MySQL

编写Dockerfile文件,CMD运行的mysql.sh脚本,需要我们手动编写。这里开通ssh服务,方便对于数据库的管理工作

[root@node1 mysql-Dockerfile]# vim Dockerfile 

   FROM centos
MAINTAINER hukey
RUN rm -rf /etc/yum.repos.d/* && echo -e "[yum]\nname = yum\ngpgcheck = 0\nbaseurl = http://192.168.2.11:8000" > /etc/yum.repos.d/yum.repo
4 RUN yum install mariadb-server openssh-server -y && yum clean all
5 RUN mysql_install_db && chown -R mysql:mysql /var/lib/mysql/
6 VOLUME /var/lib/mysql/
7 ADD mysql.sh /mysql.sh
8 RUN chmod 755 /mysql.sh
9 EXPOSE 22
10 EXPOSE 3306
11 CMD ["/mysql.sh"]

mysql.sh 脚本内容

[root@node1 mysql-Dockerfile]# vim mysql.sh 

   #!/bin/bash
# Author:hukey
mysqld_safe &
sleep
mysqladmin -uroot password ''
mysql -uroot -p123456 -e "GRANT ALL ON *.* TO 'root'@'%' IDENTIFIED BY '123456';FLUSH PRIVILEGES;"
sed -i 's/UsePAM yes/UsePAM no/g' /etc/ssh/sshd_config && ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key
echo | passwd --stdin root
/usr/sbin/sshd -D

尝试生成镜像

[root@node1 mysql-Dockerfile]# docker build -f Dockerfile -t mariadb:centos7 .
[root@node1 mysql-Dockerfile]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
mariadb centos7 49b88fcfb709 seconds ago 367.8 MB

生成完成,尝试启动容器

[root@node1 mysql-Dockerfile]# docker run -d -p : --name db mariadb:centos7
[root@node1 mysql-Dockerfile]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c0988d8c8eb2 mariadb:centos7 "/mysql.sh" seconds ago Up seconds /tcp, 0.0.0.0:->/tcp db

通过ssh服务连接到容器

[root@node1 mysql-Dockerfile]# ssh 192.168.2.11 -p
The authenticity of host '[192.168.2.11]:20002 ([192.168.2.11]:20002)' can't be established.
RSA key fingerprint is 8c:c0:c0:a5:1e:0b::::1e::::::bc.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '[192.168.2.11]:20002' (RSA) to the list of known hosts.
root@192.168.2.11's password:
[root@c0988d8c8eb2 ~]# mysql -uroot -p123456
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is
Server version: 5.5.-MariaDB MariaDB Server Copyright (c) , , Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. MariaDB [(none)]> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| test |
+--------------------+
rows in set (0.00 sec)

现在web容器和mariadb容器已经搭建完毕,接下来就需要将它们关联在起来

[root@node1 mysql-Dockerfile]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c0988d8c8eb2 mariadb:centos7 "/mysql.sh" minutes ago Up minutes /tcp, 0.0.0.0:->/tcp db
7d5c54ba0cf1 web:centos7 "/usr/sbin/httpd -f /" minutes ago Up minutes 0.0.0.0:->/tcp web
[root@node1 mysql-Dockerfile]# docker stop web
web
[root@node1 mysql-Dockerfile]# docker rm web
web

测试是否能够访问到mysql容器

[root@node1 mysql-Dockerfile]# docker run -it -p : --link=db --name web web:centos7 /bin/bash

[root@f310c805bdfc /]# yum install mariadb -y
[root@f310c805bdfc /]# mysql -uroot -p123456 -h db
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is
Server version: 5.5.-MariaDB MariaDB Server Copyright (c) , , Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. MariaDB [(none)]> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| test |
+--------------------+
rows in set (0.00 sec)

连接mysql容器成功。

再次创建后台运行的web容器

[root@node1 web-Dockerfile]# docker run -d -p : -v /myweb/:/var/www/html/ --link=db:todb --name=web web:centos7
[root@node1 web-Dockerfile]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
4a36ee3781da web:centos7 "/usr/sbin/httpd -f /" seconds ago Up seconds 0.0.0.0:->/tcp web
50dba9d34f51 mariadb:centos7 "/mysql.sh" minutes ago Up minutes /tcp, 0.0.0.0:->/tcp db

安装wordpress web程序

[root@node1 myweb]# cp -a /root/wordpress/* /myweb/

浏览器访问

登录数据库容器,创建wordpress所需数据库。

[root@node1 myweb]# ssh 192.168.2.11 -p
root@192.168.2.11's password:
[root@50dba9d34f51 ~]# mysql -uroot -p123456
Welcome to the MariaDB monitor. Commands end with ; or \g.
Your MariaDB connection id is
Server version: 5.5.-MariaDB MariaDB Server Copyright (c) , , Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. MariaDB [(none)]> CREATE DATABASE wordpress;
Query OK, row affected (0.09 sec) MariaDB [(none)]> GRANT ALL ON wordpress.* TO 'wordpress'@'%' IDENTIFIED BY 'wordpress';
Query OK, rows affected (0.03 sec) MariaDB [(none)]> FLUSH PRIVILEGES;
Query OK, rows affected (0.02 sec) MariaDB [(none)]> Bye

到此,基于Docker lamp平台的wordpress搭建成功。

如果是在生产环境中使用docker,不太建议将数据库程序存放与docker内执行。建议MySQL 实现负载或者冗余。

基于Docker 搭建 wordpress的更多相关文章

  1. 基于docker搭建wordpress博客网站平台

    WordPress是使用PHP语言开发的博客平台,用户可以在支持PHP和MySQL数据库的服务器上架设属于自己的网站.也可以把 WordPress当作一个内容管理系统(CMS)来使用. WordPre ...

  2. 【docker构建】基于docker构建wordpress博客网站平台

    WordPress是使用PHP语言开发的博客平台,用户可以在支持PHP和MySQL数据库的服务器上架设属于自己的网站.也可以把 WordPress当作一个内容管理系统(CMS)来使用. WordPre ...

  3. 基于docker搭建开源扫描器——伏羲

    基于docker搭建开源扫描器——伏羲 1.简介 项目地址 伏羲是一款开源的安全检测工具,适用于中小型企业对企业内部进行安全检测和资产统计. 功能一览: 基于插件的漏洞扫描功能(类似于巡风) 漏洞管理 ...

  4. Docker搭建wordpress博客环境(Centos7)

    Docker搭建wordpress博客环境(Centos7) 升级系统 yum -y update 设置docker库 sudo yum install -y yum-utils sudo yum-c ...

  5. 基于Docker搭建大数据集群(六)Hive搭建

    基于Docker搭建大数据集群(六)Hive搭建 前言 之前搭建的都是1.x版本,这次搭建的是hive3.1.2版本的..还是有一点细节不一样的 Hive现在解析引擎可以选择spark,我是用spar ...

  6. 基于Docker搭建大数据集群(七)Hbase部署

    基于Docker搭建大数据集群(七)Hbase搭建 一.安装包准备 Hbase官网下载 微云下载 | 在 tar 目录下 二.版本兼容 三.角色分配 节点 Master Regionserver cl ...

  7. 基于Docker搭建大数据集群(一)Docker环境部署

    本篇文章是基于Docker搭建大数据集群系列的开篇之作 主要内容 docker搭建 docker部署CentOS 容器免密钥通信 容器保存成镜像 docker镜像发布 环境 Linux 7.6 一.D ...

  8. 基于Docker搭建分布式消息队列Kafka

    本文基于Docker搭建一套单节点的Kafka消息队列,Kafka依赖Zookeeper为其管理集群信息,虽然本例不涉及集群,但是该有的组件都还是会有,典型的kafka分布式架构如下图所示.本例搭建的 ...

  9. [转帖]基于docker 搭建Prometheus+Grafana

    基于docker 搭建Prometheus+Grafana https://www.cnblogs.com/xiao987334176/p/9930517.html need good study 一 ...

随机推荐

  1. Django,Celery, rabbitmq

    学习Django 2 by Example书中的456页,运行 celery -A myshop worker -l info 报错.虽然特别指定了Celery的版本,也没用.之前使用的是标准安装:下 ...

  2. EM算法浅析(一)-问题引出

    EM算法浅析,我准备写一个系列的文章: EM算法浅析(一)-问题引出 EM算法浅析(二)-算法初探 一.基本认识 EM(Expectation Maximization Algorithm)算法即期望 ...

  3. memcached简单介绍及在django中的使用

    什么是memcached? Memcached是一个高性能的分布式的内存对象缓存系统,全世界有不少公司采用这个缓存项目来构建大负载的网站,来分担数据库的压力.Memcached是通过在内存里维护一个统 ...

  4. HDU 4757 Tree(可持久化字典树)(2013 ACM/ICPC Asia Regional Nanjing Online)

    Problem Description   Zero and One are good friends who always have fun with each other. This time, ...

  5. URAL 1741 Communication Fiend(最短路径)

    Description Kolya has returned from a summer camp and now he's a real communication fiend. He spends ...

  6. NO4——并查集

    int find(int x) { int r = x; while(father[r]!=r) r = father[r]; return r; } /* int find(int x) { if( ...

  7. java8 增强的Iterator遍历集合元素

    Iterator接口也是Java集合框架的成员,与Collection和Map两个系列的集合不一样的是Collection和Map系列主要用于充当容器的作用,而Iterator正如其名字一样是主要用于 ...

  8. BZOJ4361 isn(动态规划+树状数组+容斥原理)

    首先dp出长度为i的不下降子序列个数,显然这可以树状数组做到O(n2logn). 考虑最后剩下的序列是什么,如果不管是否合法只是将序列删至只剩i个数,那么方案数显然是f[i]*(n-i)!.如果不合法 ...

  9. 【题解】HAOI2007分割矩阵

    水题盛宴啦啦啦……做起来真的极其舒服,比某些毒瘤题好太多了…… 数据范围极小 --> 状压 / 搜索 / 高维度dp:观察要求的均方差,开始考虑是不是能够换一下式子.我们用\(a_{x}\)来表 ...

  10. 从零开始实现Vue简单的Toast插件

    在前端项目中,有时会需要通知.提示一些信息给用户,尤其是在后台系统中,操作的正确与否,都需要给与用户一些信息. 1. 实例 在Vue组件的methods内,调用如下代码 `this``.$toast( ...