【Docker学习总结】7.Docker在容器中部署静态网站

news/2024/5/14 23:00:28/文章来源:https://blog.csdn.net/u013517797/article/details/84188105

上一篇我们介绍了Docker守护式容器的启动方式,本篇我们来学习如何在Docker容器中部署静态网站。

这里我们将在Docker容器中使用Nginx搭建一个静态网站,通过这个部署,让大家对在前几节中学到的Docker容器知识,有进一步的熟悉和理解。

在开始部署之前,首先我们需要先了解一个概念,就是容器的端口映射。我们知道,网站服务通常是通过80端口来提供的,那么我们如何访问容器的80端口呢?这就需要在运行容器时,设置容器的端口映射。

一、指令介绍

设置容器的端口映射,可以使用run命令的两个选项(-P和-p)来实现:

run [-P][-p]

分别是一个大写的P和一个小写的p,其中,大写的P为“publish-all”的意思,可以指定为true或false,默认为false。
使用大写的P,将为容器暴露的所有端口进行映射。例如:

docker run -P -i -t centos /bin/bash

而小写的p则表示普通的“publish”动作,来指定需要映射容器的哪些端口。而指定容器端口的映射有四种模式,分别为:
(1)docker run -p 80 -i -t centos /bin/bash
该写法为“-p containerPort”,即仅指定容器的端口,在该情况下,宿主机的端口是随机映射的。
(2)docker run -p 8080:80 -i -t centos /bin/bash
该写法为“-p hostPort:containerPort”,即同时指定了宿主机的端口以及容器的端口。
(3)docker run -p 0.0.0.0:80 -i -t centos /bin/bash
该写法为“-p ip:containerPort”,即指定ip和容器的端口。
(4)docker run -p 0.0.0.0:8080:80 -i -t centos /bin/bash
该写法为“-p ip:hostPort:containerPort”,即指定ip、宿主机和容器的端口。

二、在容器中搭建Nginx服务、部署静态网页

下面我们就来看一下,如何在容器中部署Nginx服务。它需要以下步骤:
●创建映射80端口的交互式容器
●在容器中安装Nginx
●在容器中安装文本编辑器vim
●创建静态页面
●修改Nginx配置文件
●运行Nginx
●验证网站访问

首先,打开我们之前的CentOS 7虚拟机,然后运行一个带端口映射的交互容器(系统依旧为centos),命名为“web”:

进入容器中后,来安装Nginx。首先安装nginx的依赖lib库,依赖库主要有g++、gcc、openssl-devel、pcre-devel和zlib-devel:
使用“yum install gcc-c++”安装g++、gcc,一路“y”即可:

使用“yum install pcre pcre-devel”安装pcre-devel,一路“y”即可:

使用“yum install zlib zlib-devel”安装zlib-devel,一路“y”即可:

使用“yum install openssl openssl--devel”安装openssl-devel,一路“y”即可:

然后使用“find -name nginx”查看之前是否安装过Nginx,如果有,使用“yum remove nginx”卸载。

下面来正式安装Nginx,首先进入/usr/local目录,然后使用“wget”从“http://nginx.org/download/nginx-1.7.4.tar.gz”上获取安装包:

注意:如果没有wget指令,需要先通过“yum -y install wget”安装wget指令。
下载完毕后,使用“tar -zxvf”指令解压nginx压缩包:

进入解压后的nginx-1.7.4目录中,使用--prefix参数指定nginx安装的目录(例如./configure --prefix=/usr/local/nginx,别忘记先使用“mkdir nginx”在/usr/local文件夹下创建一个名为nginx的文件夹),然后使用make、make install安装:

这里Niginx就安装好了。

然后来使用“yum install -y vim”安装“vim”,该命令就是我们常用来编辑文本文件的命令。

然后我们使用该命令来进行一些简单的静态网页的编写,这些静态网页即是将要放置在Nginx中的静态网站中的网页。
首先使用“mkdir”创建存放该静态网站的目录:

然后切换至刚刚建好的目录,使用“vim”来创建并编辑一个静态页面:

编辑内容如下:

提示:使用“i”命令进行编写,编写完毕后,使用“Esc”退出编辑模式,然后使用“:”加“wq”进行保存和退出。

接下来,就需要编辑Nginx的配置文件,来配置访问我们的静态网页资源。
打开之前nginx的安装目录,如果记不清了,也可以使用“whereis nginx”来查看nginx的安装目录:

打开其中的conf文件夹,然后找到其中的nginx.conf文件

然后使用“vim”编辑该文件:

很简单,只需要在server配置项中,将“location”中对应的root值改为刚刚我们创建的静态文件的位置。
最后依然使用“Esc”退出编辑模式,然后使用“:”加“wq”进行保存和退出。

然后切换回上一层的“sbin”文件夹,使用“./nginx”指令启动Nginx:

使用“ps -ef”查看所有进程,发现nginx已经成功启动。
这里,我们使用Ctrl+P或者Ctrl+Q来退出容器(上一节总结学习过,使用这两种方式退出,可以保持容器在后台一直运行)。

回到宿主机,我们使用docker ps命令查看正在运行的容器:

发现我们名为“web”的容器正在运行中。
之前提到过,使用“-p containerPort”指令创建的端口的交互式容器,仅指定容器的端口,在该情况下,宿主机的端口是随机映射的。这时我们可以使用“docker port web”来查看名为web的容器与宿主机进行映射的端口是哪个:

可以看到容器的80端口与宿主机的32768端口进行的映射。
当然,我们依然可以通过“docker top 容器ID/名”命令来查看容器中服务运行的情况:

可以看到,我们的Nginx服务运行良好。

此时我们可以验证网站是否可以访问,使用“curl”来访问宿主机的32768端口映射的容器法人http服务:

可以看到,成功返回了我们刚刚编写的网页内容。

当然,我们也可以在浏览器中访问该页面,首先通过ifconfig了解我们虚拟机的ip为多少:

可以看到安装的虚拟机的ip为192.168.3.129,我们在虚拟机外使用浏览器访问http://192.168.3.129:32768:

可以看到访问容器中的静态网页成功!

当然我们也可以使用容器的ip地址来访问,使用“docker inspect 容器ID/名”命令查看容器详情:

可以看到,docker容器的ip地址为172.17.0.2,我们使用curl来直接访问http://192.168.3.129(80端口无需指定):

可以看到能够访问。

至此我们完成了在一个容器中部署一个静态的网页服务。

三、有关重启的问题

我们再次使用docker ps,可以看到容器中的服务依然在运行中:

此时我们使用“docker stop 容器ID/名”来停止该容器:

当再次重启该容器的时候,我们可以发现,重新启动的容器并没有启动Nginx:

此时我们可以选择在容器中重新启动Nginx,这里和前面一样。或者选择在外面启动Nginx,首先依然使用Ctrl+P或者Ctrl+Q来退出容器,然后在外面(宿主机)启动容器,使用docker exec指令(docker exec 容器ID/名 服务命令):

可以看到我们的docker容器中的nginx服务已启动,此时需要注意的是,我们的ip映射发生了变化:

而虚拟机的ip暂时没有发生变化:

PS:学习视频中提到容器IP会发生变化,这里我重启了两次容器IP依旧没有变化,还请了解的小伙伴在回复区告诉我是为什么,感谢!

所以,这里我们这里要注意的是,当容器重启后,相关的ip映射会发生变化(因为不指定的情况下,会随机分配)。

通过本篇总结,学习了在Docker容器中通过Nginx来部署静态的网站服务,同时复习了在前几篇中学习的一些docker命令。
后面的博文将接续为大家总结有关Docker的学习记录。

参考资料:
《极客学院Docker学习》教学视频

转载请注明出处:https://blog.csdn.net/acmman/article/details/84188105

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_785742.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

中文网php怎样盈利维持,如何保持网站稳定的排名?

1、保持网站排名稳定,需要高权重的相关外链想要网站排名长期稳定靠前,外链是重中之重,seo就是这么简单,成,外链;败,外链。所以,要想稳定住排名,网站必须拥有强大的高权重…

linux php搭建网站,linux 搭建php网站许愿墙(示例代码)

首先需要搭建本地yum源,详情参考:我使用Centos 7 做网站服务器,Centos 5 存放数据先配置centos 7配置IPvi /etc/sysconfig/network-scripts/ifcfg-eno16777736 #编辑网卡配置文件,eno16777736为网卡名字我Centos 7设置的I…

Linux运维学习网站收藏

Linux运维之道 1> http://www.linuxidc.com/ //Linux公社,收藏Linux学习的很多知识 2> http://http://www.jb51.net/ //脚本之家,许多脚本基本知识网站 3> http://www.runoob.com/ //记录IT、运维各个方面的一些基础笔记 4> h…

网站会员扫码充值系统

一、简介 微信会员充值系统,适合游戏及第三方平台充值。 二、主要功能 1. 会员支付:填写会员名及金额后,弹出二维码,会员扫码后充值。 2. 支付查询:输入订单号,可以查询订单金额。 3. 接口充值:…

美国购物网站排名

分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!http://www.cnblogs.com/zijinguang/archive…

www packtpub com电子书网站

分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow也欢迎大家转载本篇文章。分享知识,造福人民,实现我们中华民族伟大复兴!www.packtpub.com支持信用卡支付&#xff0c…

一步步构建大型网站架构

一步步构建大型网站架构 原创 2016-04-17 itivy 架构师联盟之前我简单向大家介绍了各个知名大型网站的架构,MySpace的五个里程碑、Flickr的架构、YouTube的架构、PlentyOfFish的架构、WikiPedia的架构。这几个都很典型,我们可以从中获取很多有关网站架构…

10个高质量PPT模板下载网站

1.PPTSTORE http://www.pptstore.net/ 中国顶级原创PPT模板和KEYNOTE模板下载的高端平台-PPTSTORE 设计师在这里可以发布自己的作品,用户也可以付费下载。里边免费板块的PPT模板质量也还是非常高的,但需要个人花点心思筛选自己要的模板。 2.officePLUS h…

我是如何对网站CSS进行架构的 转自张鑫旭

一、写在前面的 都是自己积累形成的一些东西,可能带有明显的个人印记。不是专业内容,不是权威指南,只是展示一点自己的观点,借此希望能与各位优秀的同行交流看法,见解。以得到进步与提高。 二、我所知的一些过往的做法…

Requests电商网站爬虫+SQLAlchemy框架数据入库

知识点: 1、SQLAqlalchemy框架的使用,数据库连接,建立表格,数据入库Mysqll等操作。 2、解决重复入库问题 3、图片元素变动的反爬应对 from sqlalchemy import create_engine from sqlalchemy.ext.declarative import declarative…

Scrapy+Mysql+SqlAlchemy爬取招聘网站信息

爬虫目的: 爬取拉勾网站杭州分站的python岗位基本信息和岗位详情,并写入mysql数据库。后附经验总结。 知识点, 1、解析函数多个yield以及多个pipeline的使用 2、Sqlalchemy框架的使用 3、Scrapy FormRequest请求,以及反爬 难点…

Python爬取招聘网站岗位信息

本代码主要实现从招聘网站爬取所有招聘某个特定岗位的公司信息,如公司名,岗位,公司规模,招聘详情页信息,并写入csv文件。难点是获取请求的url地址和参数。 在智联主页搜索销售岗位,Chrome浏览器打开网页&a…

OneinStack定时同步备份数据库/网站至七牛云存储方法

无论我们用WEB面板,还是用一键脚本安装环境建站,只要一旦我们开始用VPS、服务器,最为关键的就是服务器中的数据。因为大部分VPS、服务器商家都是无管理型主机,任何的安装和维护都需要我们自行管理。即便商家因自身问题导致服务器故…

Bugku:web 程序员本地网站

这道题一开始就是本地的提示,感觉似曾相识呢??? 我真的觉得好像做过这种题目,还是打开看看 好的哟 啥也没有也是意料之中哦~ 打开BurpSuite抓包吧 不出所料还是放入Repeater中, 添加一行X-Forwarded-For&am…

校园表白墙php源码,校园表白墙网站PHP源码

Nginxrewrite ^/mous/page/(.*)$ /index.php?mous&page1;rewrite/mous/(.∗)/page/(.∗)1;rewrite/mous/(.∗)/page/(.∗) /index.php?mous$1&page2;rewrite/mous/(.∗)2;rewrite/mous/(.∗) /index.php?mousKaTeX parse error: Expected ‘EOF’, got ‘&’ at…

如何看网站的服务器大小写,网站页面的大小写

网站页面的大小写 内容精选换一换云速建站不支持自适应宽度,推荐使用网站宽度为1200px,设置方法请参考网站基础设置。将空白处下方的模块或页脚整体上移,遮盖住空白处,然后保存修改。云速建站没有固定长度,网页的长度取…

SEO之建立有效页面数据库:目的、定义、流程、应用

关于 SEO 运营观,简明提到,好的 SEO 工作开展,是需要从「需求形成产品」再到「流量获取及转化」贯穿始终的。文中有这么一段话:SEO 运营观(传递价值,变现产品)。 SEO运营公式:有效查询覆盖 有效抓取 有效收…

阿里P9架构师讲解从单机至亿级流量大型网站系统架构的演进过程

阶段一、单机构建网站 网站的初期,我们经常会在单机上跑我们所有的程序和软件。此时我们使用一个容器,如tomcat、jetty、jboos,然后直接使用JSP/servlet技术,或者使用一些开源的框架如mavenspringstructhibernate、mavenspringspr…

快盘做网站服务器,快盘云服务器地址

快盘云服务器地址 内容精选换一换查询弹性云服务器挂载的单个磁盘信息。当前API已废弃,请使用查询弹性云服务器单个磁盘信息。GET /v2.1/servers/{server_id}/block_device/{volume_id}参数说明请参见表1。参数说明参数是否必选描述server_id是弹性云服务器ID&#…

传统IDC部署网站(三)

2019独角兽企业重金招聘Python工程师标准>>> 11. 重置密码 密钥和密码都支持远程登陆, 二选一 两个都可以登陆, 密钥相对于密码来说,相对安全一点 本地登陆无法是用密钥 修改密码 root 用户 passwd root 修改普通用户 passwd user…