相比安装gitlab来讲svn算是轻量级的了。本文主要介绍在docker下搭建svn服务器。

参考 https://github.com/elleFlorio/svn-docker

1. 获取镜像

Pulling from garethflowers/svn-server

 

Unable to find image 'elleflorio/svn-server:latest' locally
docker: Error response from daemon: Get https://registry-1.docker.io/v2/: dial tcp: lookup registry-1.docker.io on [::1]:53: read udp [::1]:44533->[::1]:53: read: connection refused.

怀疑是被墙了,查找svn镜像,同样报错。

Error response from daemon: Get https://index.docker.io/v1/search?q=svn&n=25: dial tcp: lookup index.docker.io on [::1]:53: read udp [::1]:33688->[::1]:53: read: connection refused

在宿主机中访问地址 ,能访问内容,说明没有被墙。

检查虚拟机配置,

ping www.baidu.com
ping: www.baidu.com: 未知的名称或服务

所以应该是虚拟机的网络配置问题。

firewall-cmd --state  

显示为 running ,关闭。(正式环境中 不建议使用此操作。 )

 systemctl stop firewalld.service 

systemctl disable firewalld.service

检查dns配置,发现dns配置不对,改成自动配置ip。

再次执行 运行容器命令。

报错:

 driver failed programming external connectivity on endpoint svn-server (dbad84ca5e7365e7046c7160b87eb1da296e170d282edda9399ce74d23846d02):  (iptables failed: iptables --wait -t nat -A DOCKER -p tcp -d 0/0 --dport 3960 -j DNAT --to-destination 172.17.0.3:3960 ! -i docker0: iptables: No chain/target/match by that name

关闭防火墙可能会清空docker规则

所以需要重建docker 网络。重启docker 即可。

systemctl restart docker
解决可能出现的问题

2. 设置用户名和密码

运行 命令

docker run -v /opt/data/svn/repo:/var/opt/svn --name svn-server -p 3690:3690 -e SVN_REPONAME=repository -d garethflowers/svn-server

返回容器id  bc81ba6cd8b8ec38e075949358277e6cc3632579be77d748f8fec118a65ab4dc

3. 进入容器执行命令

3.1 进入容器 

docker exec -it bc81ba6cd8b8ec38e075949358277e6cc3632579be77d748f8fec118a65ab4dc /bin/sh

3.2 资源库配置

3.2.1在/var/opt/svn目录下创建资源库。 

svnadmin create /var/opt/svn/repository

( /var/opt/svn # svnadmin create /var/opt/svn/repository)

3.2.2 配置资源库

进入repository的 config目录 (/var/opt/svn/repository/conf)执行 

vi svnserve.conf

(/var/opt/svn/repository/conf # vi svnserve.conf)

将下面的三段 前面的  # 去掉。

2.2.3 编辑密码文件 (config目录下)

vi passwd

在末尾 添加一行  用户名 = 密码 (例如 yz = 123456)

2.2.4 修改鉴权文件

vi authz

 在末尾添加

其中,yz是之前添加的用户名

 3. 退出容器

exit

复制容器内容到宿主机(这里是虚拟机)

docker cp 容器ID:/var/opt/svn/repository/ /opt/data/svn/repo

docker cp bc81ba6cd8b8ec38e075949358277e6cc3632579be77d748f8fec118a65ab4dc:/var/opt/svn/repository/ /opt/data/svn/repo

其中bc81ba6cd8b8ec38e075949358277e6cc3632579be77d748f8fec118a65ab4dc是容器id

4. 使用 ?

 

posted on 2019-03-03 21:44  余昭(Ray)  阅读(437)  评论(0)    收藏  举报