当前位置: 首页 > 编程日记 > 正文

Docker安装Apache与运行简单的web服务——httpd helloworld

Docker运行简单的web服务——httpd helloworld目录【阅读时间:约5分钟】

  • 一、Docker简介
  • 二、Docker的安装与配置【CentOS环境】
  • 三、Docker运行简单的web服务——httpd helloworld
  • 四、References



一、Docker简介

Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。

在这里插入图片描述
观察Docker图标,其实很形象的解释了什么是Docker。在没有使用集装箱的情况下,我们需要考虑不同形状、尺寸的货物怎么安放,货物与货物之间是否能堆叠,这无疑是很繁琐的事情。现在有了集装箱(容器),我们就能将不同的货物放入集装箱之内这样就能以同样的方式来存放货物,实现了标准化。

Docker采用了集装箱原理,我们将程序放入到容器中,实现“一次封装,到处运行”,只要开发环境能跑,在其他任何流行的机器上都能运行。并且将程序丢入到容器中,很好的实现了程序与程序之间的隔离,避免了类似Java开发的程序和.net开发的程序安装在一个服务器上需要很多调试,有时还会产生冲突的情况。

Docker的应用场景:

Web 应用的自动化打包和发布。
自动化测试和持续集成、发布。
在服务型环境中部署和调整数据库或其他的后台应用。
从头编译或者扩展现有的 OpenShift 或 Cloud Foundry 平台来搭建自己的 PaaS 环境。



二、Docker的安装与配置【CentOS环境】

基本安装过程,请参考我之前的一篇博客:博客

由于docker pull会出现timeout error的情况,一般需要更换docker镜像源为国内的镜像源,请参考我之前的一篇博客:博客


三、Docker运行简单的web服务——httpd helloworld

在之前我们曾经使用Docker运行过一个最简单的helloworld映像:


[root@localhost henryhzy]# docker run hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
Digest: sha256:1a523af650137b8accdaed439c17d684df61ee4d74feac151b5b337bd29e7eec
Status: Downloaded newer image for hello-world:latestHello from Docker!
This message shows that your installation appears to be working correctly.To generate this message, Docker took the following steps:1. The Docker client contacted the Docker daemon.2. The Docker daemon pulled the "hello-world" image from the Docker Hub.(amd64)3. The Docker daemon created a new container from that image which runs theexecutable that produces the output you are currently reading.4. The Docker daemon streamed that output to the Docker client, which sent itto your terminal.To try something more ambitious, you can run an Ubuntu container with:$ docker run -it ubuntu bashShare images, automate workflows, and more with a free Docker ID:https://hub.docker.com/For more examples and ideas, visit:https://docs.docker.com/get-started/

而最近在学习web和docker的相关操作,因此想顺便尝试一下简单的web服务,这里我使用docker Apache与httpd。

首先安装Apache与httpd:

[root@localhost henryhzy]# docker pull httpd
Using default tag: latest
latest: Pulling from library/httpd
6ec7b7d162b2: Already exists 
17e233bac21e: Pulling fs layer 
130aad5bf43a: Pulling fs layer 
81d0a34533d4: Pulling fs layer 
da240d12a8a4: Waiting 
latest: Pulling from library/httpd
6ec7b7d162b2: Already exists 
17e233bac21e: Pull complete 
130aad5bf43a: Pull complete 
81d0a34533d4: Pull complete 
da240d12a8a4: Pull complete 
Digest: sha256:a3a2886ec250194804974932eaf4a4ba2b77c4e7d551ddb63b01068bf70f4120
Status: Downloaded newer image for httpd:latest
docker.io/library/httpd:latest

查看镜像版本:

[root@localhost henryhzy]# docker images httpd
REPOSITORY   TAG       IMAGE ID       CREATED       SIZE
httpd        latest    dd85cdbb9987   10 days ago   138MB
[root@localhost henryhzy]# 

运行镜像如下:

docker run -itd \
--name test_web_server \
-p 8085:80 \
-v /home/user/website/:/usr/local/apache2/htdocs/ \
httpd:latest

-p 8085:80,意思是端口号的映射,<host_port>:<容器内apache的port>

-v /home/user/website/:/usr/local/apache2/htdocs/, 这是docker重要的volume的概念。<host_路径>:<容器内的路径>。

在这里插入图片描述

查看docker容器确认httpd已启动:

docker ps

在这里插入图片描述

此时访问 http://<YOUR_IP>:8085即可到达一个web page
在这里插入图片描述

在apache的folder里面放一个编写好的网页,之后就可以通过这个端口8085来访问,由此便完成了安装Apache与运行简单的web服务的流程。

下面给出一个具体的helloworld网页的例子,在你的host,到/home/user/website/文件夹下,建立一个helloworld.html网页,这个文件会自动映射到容器内的/usr/local/apache2/htdocs/下,被apache发布出来。

cd /home/user/website
vi helloworld.html

helloworld.html内容如下:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>hello world web page</title>
</head>
<body><h1>Hello from HenryHZY 18342026!</h1>
</body>
</html>

然后保存,访问 http://<YOUR_IP>:8085/helloworld.html
在这里插入图片描述

大体步骤如上,just enjoy it~



四、References

  1. Docker 安装 Apache
  2. Docker Apache建一個hello world的Web

相关文章:

在CentOS 6.2上搭建vim开发环境

在CentOS 6.2上搭建vim开发环境最后更新日期&#xff1a;2013-07-051.首先使用Ubuntu&#xff08;所在ip为192.168.16.230&#xff09;翻墙登陆http://www.vim.org/&#xff0c;下载其上面的vim相关插件到Ubuntu的下载目录下&#xff1a;cd ~/下载/http://ctags.sourceforge.ne…

python基础(三元运算+深浅拷贝+函数参数)

三元运算 三元运算&#xff0c;又称三目运算&#xff0c;主要作用是减少代码量&#xff0c;是对简单的条件语句的缩写。 1 书写格式&#xff1a; 2 result 值1 if 条件 else 值2 3 即如果条件成立&#xff0c;则将值1赋给result变量&#xff0c;如果不成立&#xff0c;将值2赋…

pythonapi是什么_python接口自动化(一)--什么是接口、接口优势、类型(详解)...

简介经常听别人说接口测试&#xff0c;接口测试自动化&#xff0c;但是你对接口&#xff0c;有多少了解和认识&#xff0c;知道什么是接口吗&#xff1f;它是用来做什么的&#xff0c;测试时候要注意什么&#xff1f;坦白的说&#xff0c;笔者之前也不是很清楚。接下来先看一下…

【阶段小结】协同开发——这学期的Git使用小结

【阶段小结】协同开发——这学期的Git使用小结一、Git简介1. Git简单介绍2. Git工作流程以及各个区域3. Git文件状态变化二、Git安装&Git基本配置三、个人踩坑1. xcode project“抽风式”问题2. 如何拯救git仓库一、Git简介 1. Git简单介绍 Git是一个分布式版本控制软件&…

PHP函数printf()、sprintf()的用法

printf()函数优点在于可以格式化输出 格式: %[padding_character][-][width][.precision]type 所有的转换说明都是以%开始,如果想打印一个%符号,必须用%% &#xff1b; 参数“padding_character”是可选&#xff0c;它将被用来填充变量直至所指定的宽度&#xff0c;该参数的作用…

20150411--Dede二次开发-01

20150411--Dede二次开发-01 目录 一、目前市场流行的电子商城系统 1 二、ecshop的介绍 1 三、安装 2 四、echsop 的目录结构 5 五、分析ecshop里面程序的架构 5 六、小试牛刀把面包屑导航改成两个大于号 6 1、根据php页面找出该页面对应的模板。 6 2、找到category.dwt模板文件…

修改cpu型号重启不变_猫头鹰展示D系列新款140毫米CPU散热器:更大散热片,能压400瓦...

猫头鹰一直以超强的CPU风冷散热器在电脑配件市场闻名遐迩&#xff0c;在台北电脑展期间&#xff0c;除了展出了概念性的无风扇CPU散热器&#xff0c;还宣布了发布D系列新款CPU散热器的计划。新的未命名的散热器相比与目前的NH-D15和NH-D15S型号要多一根热管&#xff0c;性能进一…

管理虚拟机的艺术——有备无患

随心前言&#xff1a;求求你们多多给虚拟机做一下备份~~ 超前预告&#xff1a;下一次分享一下linux/window to go的小玩意&#xff08;把系统安装到U盘&#xff0c;即插即用&#xff09; 接下来的博客尝试一下用随笔的形式&#xff0c;来写写自己感兴趣的一些玩意&#xff0c;比…

coreseek最大检索数只有1000的问题!

在 测试中发现&#xff0c;综艺视频只能看33页&#xff0c;每页10条&#xff0c;始终不得其解。经仔细分析&#xff0c;是csft.conf中的配置&#xff0c;下面修改说明如下&#xff1a;先将csft.conf中的searchd部分&#xff0c;将1000默认值改为10000max_matches 10000然后在调…

iframe怎么用_怎么样减少无效URL的爬行和索引

少年老成的云晨守望同学(题外话&#xff1a;少年老成是好事哈。我20多岁时人家说我像40岁&#xff0c;我40多岁时好多人说我像30多&#xff0c;男人20到50岁可以做到基本一个样子)在网络营销实战密码网站贴了个帖子&#xff1a;《透过京东商城看国内一线B2C网站SEO通病》。建议…

502 Server dropped connection

在本地电脑上开启了&#xff0c;全局VPN代理后&#xff0c;出现 502 报错。 502 Server dropped connection The following error occurred while trying to access http://localhost/invo/:502 Server dropped connection. 出现这种情况的原因是&#xff0c;vpn 链接挂了&…

【OpenCV】在Linux上使用OpenCvSharp

OpenCvSharp是一个OpenCV的 .Net wrapper,应用最新的OpenCV库开发,使用习惯比EmguCV更接近原始的OpenCV,该库采用LGPL发行,对商业应用友好。

DNS轮询解析是什么?

在其最简单的实现中,轮回DNS的工作方式是,不仅用一个潜在的IP地址来响应DNS请求,而且用一个潜在的IP地址列表来响应承载相同服务的几个服务器。传统的负载均衡技术通常需要专门的硬件或软件,但DNS轮询解析是一种负载分配、负载平衡或容错技术,通过管理域名系统(DNS)对来自客户计算机的地址请求的响应,按照适当的统计模型,提供多个冗余的互联网协议服务主机,将流量分散到多个服务器上。因此,虽然轮询DNS是一种简单有效的负载平衡方法,但它也存在一些限制和潜在的问题,需要根据实际情况进行选择和使用。

自建WIN10 FTP无法访问的解决方法

由于博主使用的是校园网&#xff0c;具体NAS方案比较复杂&#xff0c;主体上是用KodCloudWin10自带FTP&#xff0c;最近发现好像自带的FTP搭建不了。 废话不多说&#xff0c;说说解决方案&#xff1a; ①首先看看防火墙设置&#xff0c;用同一局域网下的主机ping一下测试是否能…

weiss数据结构和算法书的使用说明

《数据结构与算法分析 C语言描述》Mark Allen Weiss著&#xff0c;冯舜玺译&#xff0c;机械工业出版社。Weiss教授的经典教材三部曲之一&#xff0c;其中的C语言描述版本&#xff0c;也就是本书&#xff0c;被称为20世纪最重要的30本计算机教材之一。Mark Allen Weiss&#xf…

Bootstrap 栅格系统 理解与总结

Bootstrap 栅格系统 学习总结 Bootstrap框架是如今最流行的前端框架之一&#xff0c;Bootstrap功能强大&#xff0c;简单易学&#xff0c;很符合实际应用场景。 只是Bootstrap的内容较多&#xff0c;新手往往不能很快的熟练运用Bootstrap。 这里&#xff0c;我就对Bootstrap中非…

java抛出自定义异常_10 个深恶痛绝的 Java 异常。。

异常是 Java 程序中经常遇到的问题&#xff0c;我想每一个 Java 程序员都讨厌异常&#xff0c;一 个异常就是一个 BUG&#xff0c;就要花很多时间来定位异常问题。什么是异常及异常的分类请看这篇文章&#xff1a;一张图搞清楚 Java 异常机制。今天&#xff0c;栈长来列一下 Ja…

mac删除键很慢

关闭辅助功能-慢速键 重复延迟、等待调到最低

不相交集类以及应用迷宫生成

简单介绍&#xff1a; 考虑一个迷宫的生成&#xff0c;一个简单算法就是从各处的墙壁开始&#xff08;除入口和出口之外&#xff09;。此时&#xff0c;不断地随机选择一面墙&#xff0c;如果被该墙分割的单元彼此不联通&#xff0c;那么就把这面墙拆掉。重复这个过程直到开始单…

Ajax 完整教程

转载&#xff1a;http://www.cnblogs.com/Garden-blog/archive/2011/03/11/1981778.html Ajax 完整教程第 1 页 Ajax 简介Ajax 由 HTML、JavaScript™ 技术、DHTML 和 DOM 组成&#xff0c;这一杰出的方法可以将笨拙的 Web 界面转化成交互性的 Ajax 应用程序。本文的作者是一位…

python嵩天课后思考题_Python语言程序设计基础(第二版)嵩天等课后习题答案

第一次博文 Time&#xff1a;2018年04月28日 星期六 11:37二次补充 2018年05月02日第一章 程序设计基本方法 P29# 1.1字符串的拼接str1 input("请输入一个人的名字&#xff1a;")str2 input("请输入一个地点&#xff1a;")print("世界这么大&#x…

mac OneNote恢复历史记录

由于mac OneNote是个废物&#xff0c;因此还是得通过网页版OneNote或者win版OneNote来操作 网页端OneNote-对应笔记本页面 然后复制过去就可以恢复了

【C#公共帮助类】10年代码,最全的系统帮助类

这个帮助类主要包含&#xff1a;对象转换处理 、分割字符串、截取字符串、删除最后结尾的一个逗号、 删除最后结尾的指定字符后的字符、 生成指定长度的字符串、 生成日期随机码、 生成随机字母或数、字 截取字符长度、 对象<-->JSON 4.0使用、 对象<-->JSON 2.0使…

三十之惑–面霸的八月(第一部分)

三十之惑 –面霸的八月 题记&#xff1a; 三十几岁了&#xff0c;从sina大学肄业后&#xff0c;在外面漂泊&#xff0c;不好不坏。 从好的角度讲&#xff0c;这几年自己的技术没有减退&#xff0c;偶尔也还能够略有深入&#xff0c;同时能够更多的接触到产品、运营、甚至营销&a…

python小工具封装_python接口自动化(二)——封装需要用到的工具类

封装需要用的工具类&#xff1a;1、封装读取Excel的工具类&#xff0c;这里选用的是pandas&#xff1a;importpandas as pdpath ‘test.xlsx‘sheet_name ‘test_data‘classwith_excel:#构造函数&#xff0c;调用类时就运行def __init__(self, pathNone, sheet_nameNone):if p…

三十之惑–面霸的八月(第二部分)

书接上回&#xff0c;今天叙述小米的面试经历。 这里可能有一些技术理解和技术方案&#xff0c;欢迎讨论。另昨天共计收入7笔共95元&#xff0c;够我喝几杯咖啡了&#xff0c;谢谢所有捐钱的朋友。 如果你心疼我码字辛苦&#xff0c;有钱朋友钱场&#xff0c;没钱的请拉朋友来捧…

Curator Cache

1.Curator Cache 与原生ZooKeeper Wacher区别 原生的ZooKeeper Wacher是一次性的&#xff1a;一个Wacher一旦触发就会被移出&#xff0c;如果你想要反复使用Wacher&#xff0c;就要在Wacher被移除后重新注册&#xff0c;使用起来很麻烦。使用Curator Cache 可以反复使用Wacher了…

程序可以在硬件之间发送吗_你知道硬件、软件工程师之间,还有一个固件工程师吗?...

软件跟硬件之间的界限已经越来越模糊了&#xff0c;那么处于这个灰色地带的&#xff0c;就是固件了。这就分成三类工作者。1、软件工程师一般指做图形界面的程序员&#xff0c;工作内容就是写C、JAVA、Web等。2、硬件工程师当然是指玩电路板的&#xff0c;工作内容就是画原理图…

悲催的跨平台文献管理能力

1.古老的TCP交互 邮箱、FTP、硬盘 2.用现成软件Zotero 免费、跨平台、导入后在Win福昕注释可实时同步mac看看 人生苦短&#xff0c;我用Zotero。。

Mastering Algorithms with C中文版附带源码说明

Mastering Algorithm with C是一本非常经典和独具个性的算法书,主要是从程序员的角度,对算法领域的基本内容,通过C语言进行源码实现,其附带的源码非常详细,对初接触这个领域的程序员很有参考价值.我特地将该书源码的使用方法做了笔记,放在这样,以便日后参考. 下面是该书的封面…