linux docker安装svn,使用docker镜像搭建svn+Apache环境

环境准备

虚拟机装好之后,按照官网步骤检查虚拟机内核版本,必须在3.10以上版本,故此处安装redhat_7.2

# uname -r

3.10.0-327.el7.x86_64

安装docker:

yum install docker-io

有依赖是直接安装具体的依赖软件,解决依赖

docker安装成功,启动docker服务

service docker start

并设置为开机自启动

chkconfig docker on

现在我们需要制作docker镜像,可以通过Dockerfile或者是在现有的镜像上修改之后commit。

此处选择在现有的镜像基础上修改后commit并push到私有镜像库,以方便后期使用。

以下以Apache+svn(搭建svn环境)为例说明docker 镜像的制作build、提交commit、上传push过程

一、获取docker基础镜像

从docker公有库down一个适合自己系统的镜像(我此处down的是centos)

docker pull centos

运行down下来的docker容器:

docker run -it centos /bin/bash

[root@84292236ae90 /]#

进入docker容器,进行svn环境搭建,此处的 84292236ae90 即为你对于centos镜像修改的ID,提交时只需要提交该ID的内容即可。

二、在镜像中安装部署svn+Apache

此处使用yum安装

yum -y install subversion mod_dav_svn httpd

安装成功后,配置初始化svn、用户,权限(此处对于svn环境的搭建不做详细的说明)

配置完成使用exit 退出docker容器

三、重启Apache

为了使得docker容器可以使用宿主机的端口,此处映射宿主机的端口到docker容器

docker -p 参数把虚拟机的80端口映射到容器的80端口;虚拟机的80端口在 Vagrantfile 中被绑定到主机的8080端口,也就是:主机8080->虚拟机80->容器80

sudo docker run -t -i -p 80:80 -v /vagrant/htdocs:/var/www/html custom/httpd /bin/bash

# 启动 Apache

apachectl -k start

[root@bogon svn_apache]# sudo docker run -t -i -p 80:80 -v /vagrant/htdocs:/var/www/html test /bin/bash

[root@84292236ae90 /]# apachectl -k start

Passing arguments to httpd using apachectl is no longer supported.

You can only start/stop/restart httpd using this script.

If you want to pass extra arguments to httpd, edit the

/etc/sysconfig/httpd config file.

[root@84292236ae90 /]# ps -ef|grep httpd

root         18      1  7 18:44 ?        00:00:00 /usr/sbin/httpd -k start

svn          19     18  0 18:44 ?        00:00:00 /usr/sbin/httpd -k start

svn          20     18  0 18:44 ?        00:00:00 /usr/sbin/httpd -k start

svn          21     18  0 18:44 ?        00:00:00 /usr/sbin/httpd -k start

svn          22     18  0 18:44 ?        00:00:00 /usr/sbin/httpd -k start

svn          23     18  0 18:44 ?        00:00:00 /usr/sbin/httpd -k start

root         25      1  0 18:44 ?        00:00:00 grep --color=auto httpd

使用url访问:

43f8acaf3f0f9b88cb71761347fb4029.png

四、提交对镜像所做的修改

docker commit -m "Added svn+apache" -a "yayad" 84292236ae90 centos-svn

提交至本地的centos-svn镜像,目前只存在于本机器,为了便于其他机器使用,需要提交至公有库/私有个人库,根据个人选择。

此处我提交至个人私有库:

1.找到本地镜像的ID:docker images

[root@bogon opt]# docker images

REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE

firstdocker         latest              a3062f931635        2 hours ago         342.6 MB

centos-svn          latest              4dea4adb699d        2 hours ago         396.4 MB

yayad/centos_svn    latest              4dea4adb699d        2 hours ago         396.4 MB

centos              latest              bb3d629a7cbc        10 days ago         196.6 MB

2.docker tag /:

docker tag 4dea4adb699d yayad/centos_svn

3.push docker镜像到官方的个人私有库

docker push yayad/centos_svn

push时会提示输入库的账号、密码和邮箱,此处需要提前注册docker.hub

push 成功后在个人私有库即可看到push的镜像

4a322336911d4b8fbcffd8d5fda06854.png

此时就可以在其他已经安装docker环境的机器上执行docker pull centos-svn down该镜像并直接使用svn环境,无需再安装配置。

五、让Apache服务在后台自动running

但如何在启动容器的同时自动启动Apache服务,不用再需要手动启动,那么我就只需要在宿主机上监控容器的状态是否running,以下方式即可实现。

1.通过dockerfile 来build

编辑dockerfile

[root@bogon svn_apache]# cat Dockerfile

FROM yayad/centos_svn

ENTRYPOINT apachectl -k start && /bin/bash

build 新image,设置tag为df

[root@bogon svn_apache]# docker build -t yayad/centos_svn:df .

Sending build context to Docker daemon 2.048 kB

Sending build context to Docker daemon

Step 0 : FROM yayad/centos_svn

---> 52561e4f9e39

Step 1 : ENTRYPOINT apachectl -k start && /bin/bash

---> Running in 30cab1c3a861

---> de5ad506e7dc

Removing intermediate container 30cab1c3a861

Successfully built de5ad506e7dc

查看build的image

[root@bogon svn_apache]# docker images

REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE

yayad/centos_svn    df                  de5ad506e7dc        11 seconds ago      396.5 MB

启动容器查看配置结果

[root@bogon svn_apache]# docker run -it yayad/centos_svn:df /bin/bash

Passing arguments to httpd using apachectl is no longer supported.

You can only start/stop/restart httpd using this script.

If you want to pass extra arguments to httpd, edit the

/etc/sysconfig/httpd config file.

Passing arguments to httpd using apachectl is no longer supported.

You can only start/stop/restart httpd using this script.

If you want to pass extra arguments to httpd, edit the

/etc/sysconfig/httpd config file.

httpd (pid 9) already running

[root@1dce83066942 /]#

Apache服务已经启动起来了

2.修改容器的bashrc

以bash启动容器:

#docker run -it -p 80:80 -v /vagrant/htdocs:/var/www/html yayad/centos_svn /bin/bash

[root@87da9f94dc08 /]# vim /etc/bashrc

#add by dy    添加到最后

apachectl -k start

若需要可以把修改后的image commit之后使用。

想提及一下的问题:删除本地一些多余的名称为NONE的images,报错,删除失败,使用如下的方式解决了,但具体内在联系还不太清楚

docker ps -a | grep "Exited" | awk '{print $1 }'|xargs docker stop

docker ps -a | grep "Exited" | awk '{print $1 }'|xargs docker rm

docker images|grep none|awk '{print $3 }'|xargs docker rmi

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

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

相关文章

springboot 设置ico_Spring Boot--Thymeleaf模板引擎/静态页面

点关注,不迷路;持续更新Java相关技术及资讯!!!1.Spring Boot对静态资源的映射规则如果静态资源文件夹下有 index.html的话,直接访问localhost:8080的话,index就是欢迎页使用自己的图标:在静态资源文件夹放一个 favicon…

linux shell 豆瓣,用Linux shell脚本爬取豆瓣邮箱

前两天总结一下邮箱格式的正则表达式,写了一个脚本来判断输入的邮箱地址是否符合邮箱的格式(有兴趣的朋友可以翻一下我的博客去看一下)。在网上找资料的时候,发现基本都是用Python和Java来做爬虫,当然Python的居多。本着学习的心态&#xff0…

php 获取header_php 输出404状态码

今天在做一个php数据提交的小功能时,需要在判断一个值是如果为空时,就让后台的逻辑页面返回 404 状态码,提示用户页面不存在。那么接下来,飞鸟慕鱼博客要说的是 php 如何返回或输出 html 404 的状态码。php header()函数header()&…

getcwd和pwd为什么不一样_农村医保,为什么每个地区收费不一样?

新农村合作医疗保险的缴费标准,为什么每个地区都不一样呢?我们可能不难发现,就是说你在的地区每年交费可能是280元,但是别的人在的地区可能交费达到了306元或者说320元,这究竟是一种什么样的情况呢?其实每个…

矩阵论思维导图_《实变函数论》 江泽坚 3rd 思维导图与笔记整理

实变函数学十遍实变函数应该是你们本科所有数学课程中最难的了 ————韦老师如是说学期初就知道这个课不好学。话不多说,期末之前把复习导图全部做完了,po上来分享。注:由于制作辛苦,所以预先告知收取些许费用(不到一…

jackson 读取多文件_Spring Boot系列之读取配置

使用SpringBoot框架开发,读取配置是少不了的,那么你会读取配置吗?你会写配置吗?List?Map?1 目的本节我们要解决如下几个问题:如何使用Spring Boot读取配置文件?有哪些方式&#xff1…

ab plc编程软件_AB编程软件及所有组态软件授权及安装教程包含FTViewV11

前面发了几个求助的帖子,希望有朋友能提供些Factory Talk View V11的安装和授权,但是一直没有什么回复,今天结合别人的经验,算是把授权安装搞定了,在这里发布出来,希望能帮助到更多的朋友,授权和…

c++ udp多线程 例子_[内附完整源码和文档] 基于udp实现tcp功能进行大文件传输

一.项目要求Please choose one of following programing languages: C, C, Java, Python;本项目采用的是python3.6LFTP should use a client-server service model;本项目使用客户端-服务器的模式LFTP must include a client side program and a server side program; Client s…

C语言中 1%3,算术什么意思啊 算数什么意思

算术什么意思啊 算数什么意思以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!算术是什么意思数学什么是算术和算术和是正数的和,即绝对值的和,例如213.57,…

python 消息框但不影响程序执行_还在用print()查找错误?日志消息不香嘛?| 原力计划...

作者 | 灰小猿责编 | 王晓曼出品 | CSDN博客最近在做项目开发的时候,跟小伙伴聊到修 Bug 这件事。嗯,对于一只没技术的程序猿来说,修 Bug 的确是一件让人头疼的事情,尤其是对于比较大型的项目开发,在变量较多的时候&am…

vue中传值和传引用_vue prop属性传值与传引用示例

vue prop属性传值与传引用示例vue组件在prop里根据type决定传值还是传引用。简要如下:传值:String、Number、Boolean传引用:Array、Object若想将数组或对象类型也以值形式传递怎么办呢?如下方式可以实现:// component-…

.sql文件_Mysql分组排序及Sql文件执行

最近在做一个临时项目,采用的是mysql开发,主要涉及两个问题:1.一个是传参问题;2.另一个是实现对数据分组取前4的数据。个人感觉很有意义,特此记录一下。一.传参问题执行mysql文件,需要从外部传入参数时&…

android 动态库 后缀,Android Robolectric加载运行本地So动态库

前言Robolectric 是 Android 的单元测试框架,运行无需 Android 真机环境直接运行在 JVM 之上,所以在 test case 运行速度效率上有了很大提升,接近于 Java JUnit test(JUnit test > Robolectric ≫ androidTest)。不过框架本身并不支持 so …

java web输出语句到控制台_Java工程师(6).循环结构

搞清楚循环结构语句的执行效果与使用场景。程序中的循环流程程序中的循环流程试着编写程序实现下列功能:在控制台中输出100个Hello字符串。在控制台中输出从 1 到 100 的数字。… …循环结构的三要素循环结构必然包含如下三要素:循环变量 (循…

sap生产工单报工_SAP系统PP (ProductionPlanning) 模块知识培训

SAP系统PP(ProductionPlanning)模块知识培训主要内容为支持生产系统规范使用SAP系统开展日常业务,掌握SAP系统常用操作和异常处理的方法,人力资源部在6月10日下午组织实施了一期《SAP系统PP模块知识》的培训。本次培训由信息技术部主管工程师解虎授课&am…

64位程序怎么判断指针是否有效_AArch64应用程序级编程模型

根据实现选择,体系结构支持多级执行特权,由从EL0到EL3的不同异常级别表示。EL0对应于最低的特权级别,通常被描述为无特权。应用层程序员模型是在EL0上执行软件的程序员模型。系统软件决定异常级别,因此决定软件运行的特权级别。当…

n个小球放入m个盒子中_飞么盒子卫生巾自助售卖机前景

嘿,你有没有经历过,出门在外来大姨妈却没带M巾呢?尴尬丛生的你选择怎么做?现在,有了新选择,这也是今天我们迫不及待想要和你们介绍的新朋友—飞么盒子,由Faimes飞么品牌自主研发出品的卫生巾售卖…

Android代码设置角标,Android上的Badge,快速实现给应用添加角标

应用角标是iOS的一个特点,原生Android并不支持。或许是由于当时iOS的通知栏比较鸡肋(固然如今已经改进了不少),而Android的通知栏功能强大?因此才出现了一方依赖于数字角标,一方坚持强大的通知栏,在平常使用中这两种交…

opencv模糊图像变清晰_opencv-python 4.2图像模糊

图像模糊可以去除噪音。import cv2 import numpy as npimage cv2.imread("dogcat1.jpg") cv2.namedWindow("input image", cv2.WINDOW_AUTOSIZE) cv2.imshow("input image", image)#均值模糊 dst cv2.blur(image, (5, 5)) cv2.imshow("…

datatable怎么根据两列分组_公司要IT转型,我该怎么办?用Python进行数据处理

“ 以后数据处理,都用pandas”01 面临问题作为运维人员,每周要统计很多数据,特别是周四写周报的时候,基本要花半天时间。既然已经学了Python,那就试试优化它。以统计不同厂家、不同设备类型告警量为例。需要将多份类似…