Docker搭建SVN服务器
宿主机数据文件夹准备
新建文件夹/opt/data/svn/repo,并给docker用户赋读写执行等权限
[docker@promote ~]$ mkdir /opt/data/svn/repo
安装svn服务
搜索svn镜像
[docker@promote ~]$ docker search svn
这里我们取docker.io/garethflowers/svn-server这个镜像
[docker@promote ~]$ docker pull docker.io/garethflowers/svn-server
查看镜像
[docker@promote ~]$ docker images
运行容器
docker run -v /opt/data/svn/repo:/var/opt/svn --name svn-server -p 3690:3690 -e SVN_REPONAME=repository -d svn_configed
进入到容器中进行配置
[docker@promote ~]$ docker exec -it 64c26480276d /bin/sh
创建资源库
/var/opt/svn # svnadmin create /var/opt/svn/repository
资源库配置
/var/opt/svn/repository/conf # vi svnserve.conf
编辑密码文件
/var/opt/svn/repository/conf # vi passwd
新增
修改鉴权文件
退出容器
exit
将容器内生成的资源库repository拷贝到宿主机的对应目录下,因为容器一旦重启,这些信息就会丢失,所以应该持久化到宿主机的文件系统中。
docker cp 容器ID:/var/opt/svn/repository/ /opt/data/svn/repo
重启容器
[docker@promote repo]$ docker restart svn-server
在客户端新增文件
验证正常
将容器删除后再重启,测试文件是否存在,验证重启过后,文件正常
中间遇见的问题
容器内无写权限到宿主机映射过来的文件问题
问题的原因是因为:SeLinux做了安全限制
解决方案如下
1. 在启动容器的时候加上如下参数 --privileged=true
2. 临时关闭SeLinux sudo setinforce 0
3. 添加selinux规则,改变要挂载的目录的安全性文本 (chcon)
网友评论