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,一经查实,立即删除!

相关文章

感恩工作平台心得体会_感恩工作心得体会6篇

2016全新精品资料-全新公文范文-全程指导写作–独家原创1/9感恩工作心得体会6篇感恩是世界最美好的语言,是心中最美的境界。感恩不但是一种美德,也是我们工作中必须要有的一种心态。下面是美文网带来的感恩工作的心得体会,仅供参考。感恩工作…

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()&…

python如何使用字典_Python-如何使用点“。” 访问字典成员?

小编典典 你可以使用我刚刚制作的此类来做。通过此类,你可以Map像其他字典(包括json序列化)一样使用该对象,也可以使用点符号。希望对你有所帮助: class Map(dict): """ Example: m Map({first_name: …

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

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

c语言选择结构程序设计笔记,C语言选择结构程序设计.ppt

《C语言选择结构程序设计.ppt》由会员分享,可在线阅读,更多相关《C语言选择结构程序设计.ppt(32页珍藏版)》请在人人文库网上搜索。1、选择结构程序设计,关系运算符和关系表达式 逻辑运算符和逻辑表达式 If语句 Switch语句 程序举例,关系运算符和表达式 …

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

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

kinux查日志_Linux查看日志常用命令

tail -n 10 test.log 查询日志尾部最后10行的日志;tail -n 10 test.log 查询10行之后的所有日志;head:跟tail是相反的,tail是看后多少行日志;例子如下:head -n 10 test.log 查询日志文件中的头10行日志;head -n -10 test.log 查…

python替换txt指定内容_python 实现类似sed命令的文件内容替换

#!/usr/bin/env python #_*_coding:utf-8 _*_ #replace()方法把字符串中的 old(旧字符串)替换成new(新字符串),如果指定第三个参数max,则替换不超过 max 次。 #语法:str.replace(old, new[, max]) import sys,os old_t…

sftp shell 批量上传文件_如何在shell脚本里使用sftp批量传送文件-阿里云开发者社区...

主要步骤如下:1.为运行shell脚本的本地用户生成密钥对2.将其中的公钥分发到sftp欲登录的远程服务器上3.编写并以上面的本地用户运行shell脚本一.生成密钥对在shell脚本中使用sftp时必须用到密钥对(公钥和私钥).可使用下列方式生成(SSH 2.X版本),这里本地用户记为:local_user:$ …

python nlp_使用python在stanford-nlp中的回指解析

这是使用CoreNLP输出的数据结构的一种可能的解决方案.提供所有信息.这并不是完整的解决方案,可能需要扩展才能处理所有情况,但这是一个很好的起点. from pycorenlp import StanfordCoreNLP nlp StanfordCoreNLP(http://localhost:9000) def resolve(corenlp_output): "&q…

投篮c语言程序设计,教师招聘笔试体育之篮球必做20题(一)

教师招聘笔试体育之篮球必做20题(一)一、单项选择题1.篮球是最基本的区域联防战术是( )站位。A.2-1-2 B.2-3 C.3-2 D.1-3-12.国际篮球规定,球员的球衣号码必须是从( )号开始。A.1-15 B.2-15 C.3-15 D.4-153.篮球比赛中,某队进攻出手后,球碰触…

python分治算法_分治法及其python实现例子

在前面的排序算法学习中,归并排序和快速排序就是用的分治法,分治法作为三大算法之一的,有非常多的应用例子。分治法概念将一个复杂的问题分成两个或更多的相同或相似的子问题,再把子问题分成更小的子问题----“分”将最后子问题可…

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

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

编程c语言顺口溜,C语言运算符优先级顺口溜[转]

醋坛酸味灌 味落跳福豆 共44个运算符 醋-初等,4个: ( ) [ ] -> 指向结构体成员 . 结构体成员 坛-单目,9个: ! ~ -- -负号 (类型) *指针&取地址 sizeof长度 (结合方向:自右向左)酸&#…

python61到08使用说明书_python 08 文件操作

ctrl s 保存至磁盘.exe  .txt   .ppt  .jpg  文件格式open() 函数用于打开一个文件,创建一个 file 对象,相关的方法才可以调用它进行读写open(filename,mode)filename:包含了你要访问的文件名称的字符串值。mode:决定了打…

faster rcnn resnet_RCNN, Fast R-CNN 与 Faster RCNN理解及改进方法

RCNN这个网络也是目标检测的鼻祖了。其原理非常简单,主要通过提取多个Region Proposal(候选区域)来判断位置,作者认为以往的对每个滑动窗口进行检测算法是一种浪费资源的方式。在RCNN中,不再对所有的滑动窗口跑算法,而是只选择一些…

c语言字符串定界符,关于c ++:按字符分割字符串

我知道这是一个非常简单的问题,但我只想一次为自己解决我只想使用字符作为分割定界符将字符串分割成数组。 (很像C#著名的.Split()函数。我当然可以应用蛮力方法,但是我想知道是否有什么更好的方法了。)到目前为止,我已经搜索过&a…

vue 组件不受全局样式影响_组件库引入全局样式lib/style/index.css,会污染全局基础样式...

I have searched the issues of this repository and believe that this is not a duplicate.Version1.3.14Environmentmacos 10.14.6,chrome76.0.3809.100(正式版本),vue 2.6Reproduction linkSteps to reproduce在chrome extension 插件开发中使用ant-…