实验目的:

前一帖简单的实验了一下Docker的安装,过程其实也不难,按照官网指导做,基本上都能成功,唯一的困难可能就是英文的阅读,很多人面对英文时“脑壳疼”,我当然也一样,本身就是个“英语侏儒”,但看在对技术本身的热情和兴趣上,还是能够耐着性子“啃”官方的英文文档的。

安装完Docker,还是想再进一步玩一玩,比如在Docker上安装别的应用,看看Docker到底比虚拟机好在哪些地方。

好奇心仍然驱动着我……

那就试试在Docker上安装Nginx和Apache Server吧,都是两个Web服务,验证也很简单,通过浏览器键入IP地址+端口即可。

实验准备:

1)Docker 18,具体安装过程可参考前一帖:https://www.toutiao.com/i6858063018522214915/

2)实验设备,同样我还是选择云主机,假设这个云主机就是一台物理服务器,只是安装了CentOS 7.5,那么Docker就是跑在这台“物理机”上,事实上就是这么使用的。(因为考虑到成本,所以还是选择了云主机,毕竟一台物理服务器要几大万呢,囊中羞涩。),当然,也可以在自己的电脑上安装VMware WorkStation或者Oracle VirtualBox等软件,通过虚拟化软件来创建本地虚拟机,只不过自行创建的虚拟机需要手动配置网络、系统参数等,使用云主机省了这方面的麻烦,同时也更能接近实际使用环境,毕竟要通过公网访问远程的资源池。

实验过程:

在前一帖中,设置了Docker镜像加速,即手动创建/etc/docker/daemon.json这个文档,并且在文档中添加如下代码:

{

"registry-mirrors": ["https://zfzbet67.mirror.aliyuncs.com"]

}

设置完成后,再通过“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很可能引领着下一个云计算发展的潮流。

当然,我自己分享的一些东西,仅仅是皮毛而已,就是因为好奇心,想初步了解了解“所谓何物”而已,期望在了解的面足够宽的情况下,再选择其中一二最感兴趣的地方,进一步深挖,看看最后挖出来的是钻石还是石墨。

docker 安装nginx_Docker18安装Nginx和Apache实验相关推荐

  1. 配置Nginx前端Apache后端服务器LNMPA-与LNMP,HHVM性能比拼

    文章目录 LNMPA一键安装 LNMPA性能比较 HHVM性能比拼 Nginx前端小结 文章目录 LNMPA一键安装 LNMPA性能比较 HHVM性能比拼 Nginx前端小结 Apache和Nginx ...

  2. Linux 环境安装 Node、nginx、docker、vsftpd、gitlab

    Linux 环境安装 centos7 # 更新yum yum update -y 0. 防火墙 firewalld 新入的JD云服务器,发现防火墙默认是关闭的. # 查看防火墙状态 systemctl ...

  3. 如何在 FreeBSD 10.2 上安装 Nginx 作为 Apache 的反向代理

    如何在 FreeBSD 10.2 上安装 Nginx 作为 Apache 的反向代理 Nginx 是一款自由开源的 HTTP 和反向代理服务器,也可以用作 POP3/IMAP 的邮件代理服务器.Ngi ...

  4. 阿里云免费SSL证书申请与安装使用-附Nginx,Apache,IIS 6,IIS 8配置SSL教程

    大家直接跳转吧:http://www.07net01.com/2017/01/1795676.html 也许是看到了Https是未来发展的大趋势,Symantec 和GeoTrust 两大SSL公司最 ...

  5. mysql安装 张宴_Linux_centos5 源码安装Nginx + mysql + apache + php的方法,主要依照的是张宴的一篇博文 - phpStudy...

    centos5 源码安装Nginx + mysql + apache + php的方法 主要依照的是张宴的一篇博文<http://blog.s135.com/post/366/>,安装的软 ...

  6. docker环境下安装nginx、挂载文件、docker容器中文乱码

    docker环境下安装nginx.挂载文件.docker容器中文乱码 文章目录 docker环境下安装nginx.挂载文件.docker容器中文乱码 1.首先下载docker的nginx镜像 2.查看 ...

  7. docker安装halo+mysql+nginx搭建个人博客

    docker 安装halo+mysql+nginx搭建个人博客(debian or ubuntu) 1 简介 本文主要介绍debian和国内腾讯云ubuntu下安装docker,使用docker安装h ...

  8. vagrant 安装centos7后,安装 docker, mysql redis nginx 开发环境

    1.安装VirtualBox https://www.virtualbox.org/ 直接下载安装 2.安装Vagrant https://www.vagrantup.com/downloads.ht ...

  9. Docker 介绍、安装、基础搭建 --01

    1. Docker介绍 1.1 是容器,可以部分完全封闭.封闭意味:一个物质(放到容器),另一个物质(放到容器)隔离             容器可以保护里面的物质      1.2 容器的前世   ...

最新文章

  1. 深入浅出NIO之Channel、Buffer
  2. 无法安装或运行应用程序。该应用程序要求首先在“全局程序集缓存(gac)”中安装程序集system.data.entity...
  3. sql server 索引学习1
  4. RabbitMQ指南(上)
  5. zhajinhuagame为了迎接新版
  6. 10年程序员谈.Net程序员的职业规划
  7. O-超大型LED显示屏
  8. [转]Angular引入第三方库
  9. Reg Organizer v8.75 注册表及系统清理优化工具
  10. qca9563修改art区,将2T2R修改为1T1R
  11. python list 元素位置_python定位列表元素
  12. 微信获取access_token 返回-1000
  13. tomcat安全加固手册
  14. 腾讯新品吐个槽,目标是你的核心用户
  15. Mac OS 解决 remote: Permission to xxx/xxx.git denied to xxx. 的两种方案
  16. VSCode图片预览插件 Image preview
  17. 详解Java操作符 instanceof
  18. 英语Partschinite芬达石partschinite锰铝榴石
  19. 依赖注入的正确打开方式 bilibili/kratos × google/wire
  20. 【观察】助力5G云边协同应用落地,烽火通信的突破与创新

热门文章

  1. HDU-5723 Abandoned country
  2. ScrollView的基本用法丶代理方法
  3. ADO.NET中带参数的Sql语句的陷阱
  4. 【Microsoft Word】编辑文字后,图片位置混乱的解决方法
  5. 【前端】layui日期控件点击一闪而过解决方法
  6. 微软Print to PDF打印机提示参数错误的解决方法
  7. 常见的内存泄漏原因及解决方法
  8. utf-8编码的中文注释 在 sourceinsight 显示乱码的解决方法---utf8 转gb2312插件
  9. LayUi前端框架删除数据缓存问题(解决删除后刷新页面内容又会显示问题)
  10. SQL Server转义下划线