使用docker容器部署httpd(绝对可用)

news2025/7/19 13:39:54

众所周知,httpd是一个服务,里面有很多配置要改,通过dockerfile编写很复杂,所以这里,我们【采用进入容器内修改的方式,去生成一个新的httpd容器】

httpd我们平常用yum安装,所以一定要最好是自带Yum的centos7

拉取容器基础环境

docker pull centos:7

启动容器,以特权模式启动,否则无法修改httpd

docker run -dit --name httpd --privileged=true docker.io/centos:7 init

然后进入容器

docker exec -it httpd /bin/bash

进入容器内部后,安装httpd

yum install httpd

修改httpd指定你想访问的端口

vi /etc/httpd/conf/httpd.conf

改成自己喜欢的端口

vi /etc/httpd/conf.d/welcome.conf

减号改加号,意思是不用默认页面

重启(这里centos的版本不一样,启动的代码也不一样)

systemctl restart httpd.service

构建新镜像

 docker commit -a="clark" -m="i install httpd" httpd dahua-httpd

启动容器

docker run -di --name dahua-httpd -p 9998:9999 dahua-httpd:latest

前面9998是,映射出来的端口号,9999是容器内部端口号,我们通过9998访问来观察是否成功

不成功!要进入容器里面在把他给启动

docker exec -it dahua-httpd /bin/bash

systemctl start httpd.service

成功

但是,你是不是会觉得很蠢!为什么还要进入容器里面使用,容器之所以出来,就是让大家run一下服务就能用的

ok,下面,老弟带你加一个小参数就搞定,在run的时候也启动内部服务

我来给大家演示一下,想搞定,必备Dockerfile

创建一个httpd2的文件夹,在里面创建一个Dockerfile

dockerfile意思是:拉取我们刚生成的带httpd的镜像,然后运行run.sh脚本,并且暴露端口

FROM dahua-httpd
RUN echo "Asia/Shanghai" > /etc/timezone
COPY run.sh /run.sh
RUN chmod 777 /run.sh
EXPOSE 9999
ENTRYPOINT [ "/run.sh" ]

为什么要用run.sh,而不是直接执行,因为从外部执行docker会有很多限制,很多不会生效

run.sh脚本的内容

#!/bin/sh
httpd
bash

解释,运行httpd,然后bash表示,他运行完不会退出,不加bash会导致容器关闭

注意httpd,不要写成systemctl start httpd.service这样不安全(并且run的时候还要多加很多操作),httpd就代表httpd start

构建新的自动运行的镜像,其中httpd2是名称

docker build -t dahua-httpd-new .

启动

docker run -dit --name dahua-httpd -p 9998:9999 dahua-httpd-new:latest

浏览器访问

 

参考:

另外特别鸣谢-感谢公司某雷哥的支持

Docker 镜像构建之 docker commit - 知乎

Centos7文件服务器的搭建(含域名访问)_我要用代码向我喜欢的女孩表白的博客-CSDN博客_centos7文件服务器搭建

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【小程序】全局配置window和tabBar

目录 全局配置 1. 全局配置文件及常用的配置项 全局配置 - window 1. 小程序窗口的组成部分 2. 了解 window 节点常用的配置项 ​编辑 3. 设置导航栏的标题 4. 设置导航栏的背景色 5. 设置导航栏的标题颜色 6. 全局开启下拉刷新功能 7. 设置下拉刷新时窗口的背景色 …

Hibernate-Validator(数据校验框架)

目录一、Hibernate-Validator 简介二、项目中为什么要用校验框架三、添加依赖四、看一个入门级案例五、常用注解六、使用groups的校验一、Hibernate-Validator 简介 hibernate-validator是Hibernate项目中的一个数据校验框架,它能够将数据校验从业务代码中脱离出来…

-防火墙-

数据来源 一、防火墙的基本概念 防火墙的定义:是一款具备安全防护功能网络设备 ◆ 隔离网络 将需要保护的网络与不可信任网络进行隔离,隐藏信息并进行安全防护 防火墙基本功能: ◆ 访问控制 - ACL ◆ 攻击防护 ◆ 冗余设计 ◆ 路由、交…

基于XMC4800 Ethercat从站的工厂自动化解决方案

背景 随着“工业4.0”与“工业互联网”概念的提出,“互联网制造”的概念被大众所熟知,人们称之为第四次工业革命。在这样的背景下,新的工业自动化孕育而生。智能工厂、提供智能工厂设计与实施的工业4.0解决方案商、技术供应商相继出现。ARRO…

Android---Banner轮播图

轮播图是一种很常见的UI。Banner框架能够帮助我们快速开发,完成首页轮播图效果的需求。 1、导入Banner依赖 implementation io.github.youth5201314:banner:2.2.2 2、activity_main.xml布局。 banner_loop_time: 设置轮播间隔时间,默认3000&#xff…

逆天了!用Numpy开发深度学习框架,透视神经网络训练过程

哈喽,大家好。 今天给大家分享一个非常牛逼的开源项目,用Numpy开发了一个深度学习框架,语法与 Pytorch 基本一致。 今天以一个简单的卷积神经网络为例,分析神经网络训练过程中,涉及的前向传播、反向传播、参数优化等核…

制作圣诞帽其实特简单(附 Python 代码)

圣诞将至,虽然咱不过这洋节,但是热闹还是要凑一下的,相信已经有很多圣诞帽相关的周边在流传了,今天咱们就自己动手,给头像增加一个圣诞帽。 文章目录基础知识准备数字图像图像通道ROI和mask矩阵(Numpy&…

BaseAdapter实现的投票案例

BaseAdapter实现的投票案例 1.知识补充 android:descendantFocusability"blocksDescendants",关键是让谁先去获取焦点beforeDescendants:viewgroup会优先其子类控件而获取到焦点afterDescendants:viewgroup只有当其子类控件不需要获…

Flink Process Function

处理函数: ProcessFunction: 含有状态流的特性 处理函数面对的是数据流中的最基本元素: 数据事件 event, 状态 state, 时间 time 文章目录1.基本处理函数 ProcessFunction1.1 处理函数的功能和使用1.2 ProcessFunction 解析2.处理函数的分类2.1 按键分区处理函数 KeyedProces…

LaTex期刊模板下载与使用

1 LaTex期刊模板下载与使用 接上文介绍了LaTex的下载安装和基本语法使用规则。 上文地址:科研人快速入门LaTex到日常使用,下载安装配置,语法使用说明等 一般来说,LaTeX主要用在论文提交,书籍排版过程中,提…

Kubernetes:Pod

文章目录1、Pod 定义2、Pod 使用2.1、init 容器2.2、容器生命周期处理函数2.3、容器的探测2.3.1、探测机制2.3.2、探测结果2.3.3、探测类型startupProbereadinessProbelivenessProbe2.3.4、案例2.4、测试代码3、Pod 的部署3.1、Deployment3.2、DaemonSets3.3、静态 pod4、参考p…

我国金属包装行业企业数量下降 经济效益整体表现不佳 但亏损额减少

根据观研报告网发布的《中国金属包装市场发展趋势研究与未来投资预测报告(2022-2029年)》显示,金属包装是指采用金属薄板,针对不同用途制作的各种不同形式的薄壁包装容器,相较于其它包装,金属包装因为其材质特性,比一般…

3DEXPERIENCE平台2023新功能揭秘!Governance云端数据管理解决方案

3DEXPERIENCE平台更新版本已经与大家见面,今天众联亿诚与大家分享Governance新功能。 多年来,我们一直在寻找SOLIDWORKS数据管理的更优解决方案。但就是感觉很艰难,硬件投资是昂贵的,实施是资源密集型的,更重要的是&a…

【TypeScript】TS入门(一)

🐱个人主页:不叫猫先生 🙋‍♂️作者简介:前端领域新星创作者、华为云享专家、阿里云专家博主,专注于前端各领域技术,共同学习共同进步,一起加油呀! 💫系列专栏&#xff…

Hook原理

对于会Hook的人来说,Hook其实也就那么回事.对于没有Hook过的人来说,会感觉Hook很高大上(其实也没毛病). 那么今天我们就来探讨一些Hook的原理是什么. 我认为任何Hook都可以分为以下三步(简称WFH): 需要Hook的是什么,在哪里(后面简称Where). 寻找到Hook的地方.(后面简称Find)…

JavaScript基础(15)_数组

对象分为三种:内建对象、宿主对象、自定义对象。 内建对象 内建对象是指由ECMAScript事先提供的、不依赖于宿主环境的对象,这些对象在程序运行之前就已经存在,并可以直接在程序中任何地方任何时候拿来使用。常见的内建对象可以直接通过new调…

【JavaEE】Servlet

努力经营当下,直至未来明朗! 文章目录【Servlet】1.0Servlet概述写一个Servlet程序1. 创建项目2. 引入Servlet依赖3. 创建目录结构4. 编写代码5. 打包程序6. 部署程序7. 验证程序【Servlet 2.0】访问出错【小结】追求想要的一定很酷! 【Serv…

docker rootless安装

rootless 简介 rootless模式允许以非root用户身份运行Docker守护程序和容器,以减轻守护程序和容器运行时中的潜在漏洞。只要满足先决条件,即使在Docker守护程序安装期间,无根模式也不需要root特权。无根模式是Docker Engine v19.03中引入的一…

【俄罗斯方块】单机游戏-微信小程序项目开发入门

这是一个仿俄罗斯方块小游戏的微信小程序,只需要写一小段代码就实现出来了,有兴趣的同学完全可以自己动手开发,来看看实现过程是怎样的呢,边写边做,一起来回忆小时候玩过的经典俄罗斯方块游戏吧。 文章目录创建小程序页…

certbot生成证书,配置nginx,利用脚本自动续期

踩了大量坑,做下记录。以下适用于博主本人,但是未必会适用于所有人 单域名与泛域名证书生成 sudo certbot certonly --standalone --email 邮箱 -d 域名# 单域名certbot certonly --preferred-challenges dns --manual -d *.baidu.com(修改这里) --ser…