在docker中安装一个apache服务器(基于Ubuntu),并在外部电脑访问这个服务器

上篇博客中,我们讨论了如何在ubuntu 14.04(64位)中安装一个docker应用,以及docker的一些基本命令的用法及其解释:

http://blog.csdn.net/liujan511536/article/details/46227169


接下来我们说下如何利用docker来建一个apache服务器镜像,并把我们的html文件传到这个镜像里,最终我们可以在dcoker外的电脑访问到这个docker中的apache服务器。

这里架设服务器我用的是xampp。

注意:如果你对下面的某些命令有不理解的地方,请看我的上一篇博客。

首先下载xampp,选linux版本:

下载地址:https://www.apachefriends.org/download.html

启动docker:

service docker start


或者用这条命令:

sudo docker -d


(如果启动有什么问题的话,请看上篇博客末尾的常见问题)

然后把我们下载的xampp.run上传到容器中来,这里我的xampp.run放在/home/Download目录下,假设我的镜像名为ubuntu

sudo docker run –i –t –v /home/Download/xampp.run:/tmp/xampp.run  ubuntu  /bin/bash

运行上述命令后,就会启动了一个容器,并进入到容器命令行中;

接着安装xampp

(xampp在Ubuntu中默认安装路径为/opt/lampp)

进入容器中的tmp目录:

cd /tmp

运行xampp.run(这里如果有什么权限问题,用sudo chmod 777 *解决):

sudo ./xampp.run


然后就是安装的过程了,有需输入的地方,为了方便可以直接按Enter或者y就可以了。

安装完xampp后,紧接着输入:

mysql –u root

显示是Command not found,因为我们还没把mysql的执行文件目录加入到环境变量PATH中。

把mysql执行文件目录(默认目录是/opt/lamp/bin)加入到PATH中:

sudo vim ~/.bashrc #没有vim可用sudo apt-get install vim安装vim

打开.bashrc后,在其最后加上这句:

export PATH=$PATH:/opt/lampp/bin

保存后退出vim,接着在输入一下命令使得上述修改生效:

source ~/.bashrc

以下命令可用来启动apache,mysql和php:

/opt/lampp/lampp  start


这时再输入mysql就可以进入的mysql解释器中了(输入exit可退出解释器)

接着在本机电脑中打开另一个命令行终端,输入:

sudo docker ps

来查看刚才运行的那个容器的id,然后退出那个容器(在容器命令行中输入exit),再将那个容器保存成新的镜像:

sudo  docker commit  容器id  新镜像名

接着启动新保存的那个镜像,假设镜像名为ubuntu2:

sudo docker run –i  -t –p 8088:80 ubuntu2 /bin/bash

在启动容器命令行中输入以下命令来启动apache和mysql:

/opt/lampp/lampp  start

到这里,就可以在本机电脑上访问上面容器中的apache服务器了。

打开本机电脑的浏览器,在地址栏中输入:

localhost:8088

然后显示的页面就是xampp的页面了


(如果这里显示的页面是无法连接之类的,请关掉容器然后重新启动容器)

回到刚才那个容器的命令行来,进入到apache中存放html文件的目录中(默认为/opt/lampp/htdocs):

cd /opt/lampp/htdocs

接着在htdcos目录下新建一个html文件:

sudo  vim  hello.html

文件内容为:

helloworld

保存并退出vim。

接着在本机电脑浏览器地址栏中输入:

localhost:8088/hello.html

不出意外的话,你就可以看到helloworld了;如果有意外,比如显示access forbidden之类的,请回到容器命令行,进入到htdocs目录,修改hello.html的权限(sudo chmod 777 hello.html)。


到这里,你已经学会了如何利用docker来建一个apache服务器,并在外部电脑中访问容器中的网页。











Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐