前言:
而今你们对“apache外网不能访问”大体比较关切,各位老铁们都需要学习一些“apache外网不能访问”的相关知识。那么小编同时在网上网罗了一些对于“apache外网不能访问””的相关资讯,希望兄弟们能喜欢,小伙伴们一起来了解一下吧!实验目的:
前一帖简单的实验了一下Docker的安装,过程其实也不难,按照官网指导做,基本上都能成功,唯一的困难可能就是英文的阅读,很多人面对英文时“脑壳疼”,我当然也一样,本身就是个“英语侏儒”,但看在对技术本身的热情和兴趣上,还是能够耐着性子“啃”官方的英文文档的。
安装完Docker,还是想再进一步玩一玩,比如在Docker上安装别的应用,看看Docker到底比虚拟机好在哪些地方。
好奇心仍然驱动着我……
那就试试在Docker上安装Nginx和Apache Server吧,都是两个Web服务,验证也很简单,通过浏览器键入IP地址+端口即可。
实验准备:
1)Docker 18,具体安装过程可参考前一帖:
2)实验设备,同样我还是选择云主机,假设这个云主机就是一台物理服务器,只是安装了CentOS 7.5,那么Docker就是跑在这台“物理机”上,事实上就是这么使用的。(因为考虑到成本,所以还是选择了云主机,毕竟一台物理服务器要几大万呢,囊中羞涩。),当然,也可以在自己的电脑上安装VMware WorkStation或者Oracle VirtualBox等软件,通过虚拟化软件来创建本地虚拟机,只不过自行创建的虚拟机需要手动配置网络、系统参数等,使用云主机省了这方面的麻烦,同时也更能接近实际使用环境,毕竟要通过公网访问远程的资源池。
实验过程:
在前一帖中,设置了Docker镜像加速,即手动创建/etc/docker/daemon.json这个文档,并且在文档中添加如下代码:
{
"registry-mirrors": [";]
}
设置完成后,再通过“docker pull 具体镜像”就能够很快下载镜像文件了。
实验一:安装Nginx
步骤一:启动docker,查看Nginx镜像,然后通过docker pull 命令下载nginx镜像文件。
systemctl start docker //启动docker服务
docker search nginx //在镜像仓库中查看docker官方的nginx镜像
docker pull nginx //从镜像仓库中拉取nginx镜像
docker run --name mynginx -p 8000:80 -d nginx //运行nginx,将docker的8000端口映射到nginx的80端口上,同时自定义一个名字mynginx,便于后续操作管理
docker ps //查看当前运行的docker
步骤二:进入nginx这个docker内部,看看配置文件,
docker exec -it mynginx /bin/bash
进入nginx这个docker内部,这里可以使用run时自定义的名字,也可以通过container id操作,为了方便肯定选择自定义名字
注意:我们进入nginx这个docker内部后,显示的当前路径就有区别了,见图中红线部分,显示的是当前docker的id。当然,当前的根目录自然也是nginx docker自己的根目录,相关文件也是自己的,根本看不见其它的文件,也就是docker的隔离特性。
步骤三:编辑配置文件。编辑文件,自然会想到vi或者vim吧,当我们自信的键入命令后,会意外的发现,系统竟然不识别!!!上网搜了下,需要用两个命令来安装。
apt-get update
apt-get install vim
vim /etc/nginx/conf.d/default.conf
注意:使用vim时,退出的时候可能会跟平常使用的有些差异,自己还是捣鼓了一小会儿呢。平时使用vim编辑后,先按Esc健退出insert模式,然后按Shift+Q健,输入q或wq退出,但在这里我没成功,后来是通过按Shift+:组合健,然后输入q或者wq才能退出。
上图就是我们熟悉的server和location语句块了,可以修改映射端口,可以添加location语句块用于页面的匹配转发等等。
如果要退出当前nginx这个docker,可以使用exit命令。
步骤四:在浏览器中输入公网IP+端口,这里的端口是安装docker的服务器(云主机)端口,也就是8000,注意在安全组里放通,否则通过本地电脑的浏览器无法访问页面的。
实验二:安装Apache httpd
步骤一:从镜像仓库中拉取httpd的镜像,然后运行httpd容器。
docker pull httpd //从镜像仓库中拉取httpd镜像
docker run --name myhttpd -p 8091:80 -d httpd //运行httpd,将docker的8091端口映射到httpd的80端口上,同时自定义一个名字myhttpd,便于后续操作管理
docker ps //查看当前运行的docker
步骤二:进入httpd容器,查看配置文件
docker exec -it myhttpd /bin/bash
步骤三:编辑配置文件,httpd.conf。同样要安装vim编辑工具,否则无法识别命令。
上图就是我们熟悉的修改监听端口的代码,可以根据实际需要进行修改保存。
注意:退出vim编辑时,按Shift+:组合健,然后输入q或者wq退出。
要退出httpd这个容器,可以在当前命令行键入exit退出。
步骤四:验证试验,我们在浏览器中键入公网IP+端口号,如果能够返回成功页面,说明httpd服务安装成功。前面run的时候将当前服务器(云主机)的8091端口映射到httpd容器的80端口,注意在云主机的安全组里放通8091端口。
实验总结:
虚拟机与容器docker的对比:
1)虚拟机安装占用资源多,这个已经是公认的且证据确凿,一个精简版的CentOS 7.5大概需要3GB容量,外加Nginx或者Apache server的300MB安装文件;但对于docker容器来说,仅仅是从镜像仓库pull下来的Nginx或者Apache server的镜像文件,也就300MB左右。这还只是存储资源,实际运行的内存、CPU资源,虚拟机同样要比docker容器大的多,作为后台服务器,对于资源使用效率要求还是非常高的。
2)虚拟机启动时间比docker容器长很多,标准CentOS 7.5的虚拟机启动后,如果要安装Nginx,便要配置yum仓库,同时使用yum install nginx安装,安装完成后我们制作一个系统镜像,这个镜像文件就是CentOS 7.5+nginx,使用这个自定义镜像文件创建一个虚拟机至少需要几十秒,而docker容器仅需要一两秒,也就是运行一下docker run -p 8000:80 -d nginx。当然yum install nginx和docker pull nginx这两个操作都是安装nginx的,算是启动前准备,具体耗时时间是取决于镜像下载带宽和个人操作熟练程度,没有计算在启动服务的时间内。
3)资源隔离,虚拟机的隔离是操作系统级的,即通过启动不同的虚拟机来进行资源隔离,比如我们要想让Nginx和Apache server两个服务的资源隔离,需要安装在不同的虚拟机上,否则安装Nginx的虚拟机可以查看和操作Apache server的配置文件和进程。Docker容器的隔离是进程级别的,这点一直是被“诟病”的关键点,相信随着技术的不断发展,这个被“诟病”的关键点将不复存在。通过docker exec命令进入Nginx容器后,就只能看到Nginx的所有文件,而无法看到,更别说操作其它文件和应用了。
4)资源管理,虚拟机本地管理有VMware workstation、Oracle VirtualBox等,docker容器有docker UI、shipyard、portainer等(详细的操作配置可在网上查找),当然也可以通过docker exec命令行模式,各有千秋吧,相对来说呢,虚拟机发展这么多年,已经非常成熟,相应的管理工具也肯定很成熟,商用性很高。对于集群、分布式操作,虚拟机对应的有OpenStack等云操作系统,docker容器有Kubernates、Mesos等,随着云原生技术的飞速发展,大有一种要“颠覆”传统虚拟化技术的趋势,所以docker和K8S很可能引领着下一个云计算发展的潮流。
当然,我自己分享的一些东西,仅仅是皮毛而已,就是因为好奇心,想初步了解了解“所谓何物”而已,期望在了解的面足够宽的情况下,再选择其中一二最感兴趣的地方,进一步深挖,看看最后挖出来的是钻石还是石墨。
标签: #apache外网不能访问 #进入apache服务器主配文件命令 #虚拟机搭建nginx #windowsapache外网 #apache虚拟机配置文件