以容器的方式运行GitLab

以容器的方式运行GitLab

 

目录:

 

一、环境及实验目标

二、软硬件需求:

三、准备数据目录

四、运行容器

、配置GitLab

六、访问页面

七、其他注意事项

八、运行附图

 

一、环境及实验目标

实验目标:在一台虚拟机上,准备好Docker环境,使用容器的方式运行gitlab镜像,搭建一台内部私有的gitlab服务器,要能通过http://gitlab.abc.com域名访问。

机器名:gitlab9

IP地址:192.168.3.169

访问网址:http://gitlab.abc.com

 

、软硬件需求:

CPU :最少1核,也能跑,慢!建议2核以上;

内存:最少4GB1GB Ram+3GB Swap),建议4GB Ram以上;

存储:根据各自需要而定,最少5-10GB以上可用空间,建议使用SSD

软件:Ubuntu 16.04.03+Docker 1.12.3(我用的是这个版本)

 

不满足以上配置,在使用中要么会比较慢,要么会报500错误。

 

建议:24GB20GB+空间,可满足100用户的基本使用。

实际生产中使用时,可根据用户数和存储量,确定硬件配置,

查询地址:https://docs.gitlab.com/ce/install/requirements.html

  

、准备数据目录

#gitlab/gitlab-ce容器需要先创建三个目录

#分别存放应用数据、日志和配置文件

#宿主机上/gitlab/data对应容器中/var/opt/gitlab

#宿主机上/gitlab/logs对应容器中/var/log/gitlab

#宿主机上/gitlab/config对应容器中/etc/gitlab

sudo mkdir -p /gitlab/data

sudo mkdir -p /gitlab/logs

sudo mkdir -p /gitlab/config

 

、运行容器gitlab/gitlab-ce

#启动一个gitlab-ce容器

#--hostnameGitLab容器的主机名,不是对外发布的网站名。

 sudo docker run --detach \

    --hostname gitlab.example.com \

    --publish 443:443 --publish 80:80 --publish 2222:22 \

    --name gitlab \

    --restart always \

    --volume /gitlab/config:/etc/gitlab \

    --volume /gitlab/logs:/var/log/gitlab \

    --volume /gitlab/data:/var/opt/gitlab \

    gitlab/gitlab-ce:latest

 

#首次启动可能比较慢,需要等待几分钟的时间。

#可以使用sudo docker ps命令查看当前gitlab容器的状态。

#当它的状态由starting变为health时,说明成功启动了。

 

、配置GitLab

#如果按照上述准备工作,配置好的宿主机上的三个目录,

#GitLab的配置文件在容器中为/etc/gitlab/gitlab.rb

#对应宿主机上的文件为/gitlab/config/gitlab.rb

#直接使用vi编辑器,在宿主机上编辑该文件即可。

sudo vi /gitlab/config/gitlab.rb

 

#注:使用Xshellssh远程登录到宿主机,

#再执行sudo docker exec -it gitlab vi /etc/gitlab/gitlab.rb

#试图到容器中运行vi命令,编辑配置文件,会出错!

 

#只要修改文件中的external_url参数即可,

#指向需要发布的http://gitlab.abc.com网站。

#然后重新启动gitlab容器

sudo docker restart gitlab

 

、访问页面

#在客户端机器上(操作系统为Win7),ip地址为192.168.3.xxx

#修改C:\windows\system32\drivers\etc\hosts文件

#加入192.168.3.169   gitlab.abc.com

#通过网页访问http://gitlab.abc.com

#首次访问需要修改管理员密码,

#然后就可以使用root用户和新密码登录

 

、其他问题及注意事项:

7.1如果启用了SELinuxDocker的运行命令是怎样的?

sudo docker run --detach \

    --hostname gitlab.example.com \

    --publish 443:443 --publish 80:80 --publish 2222:22 \

    --name gitlab \

    --restart always \

    --volume /gitlab/config:/etc/gitlab:Z \

    --volume /gitlab/logs:/var/log/gitlab:Z \

    --volume /gitlab/data:/var/opt/gitlab:Z \

    gitlab/gitlab-ce:latest

否则docker进程在挂载的卷上,没有足够的权限创建配置文件。

 

7.2访问页面报50x故障怎么办?升级后遇到权限问题怎么办?

#当访问页面遇到500错误时,可以尝试重启gitlab容器来解决。

sudo docker restart gitlab

 

#或者在升级新的Docker镜像时,遇到权限问题,

#可以尝试执行gitlab的更新权限命令解决:

sudo docker exec gitlab update-permissions

sudo docker restart gitlab

 

7.3容器已经重启好了,为什么不能访问页面?

#执行sudo docker restart gitlab命令,重启容器

#该命令虽然立刻就能执行完了,

#但容器内部的服务还没有完全起来,

#通过sudo docker ps查看容器状态,

#需要1分多的时间,健康状况才能从starting转换到health

#在此期间访问网站会报502错误!

#待容器的状态转为health以后,才能正常访问网页

 

7.4疑问:启动容器时的hostname是什么作用?是容器的主机名?

还是对外发布的网站名称?什么地方会用到这个域名?

答:--hostname参数GitLab容器的主机名,不是对外发布的网站名。

 

7.5Gitlab容器使用了哪些端口?怎样避免冲突?

#gitlab容器内部开放了80/22/443/8080端口,

#这些端口号也是宿主机常用的端口,不能直接80到80,22到22,这样容易引起冲突

#如果想要将这些端口正确暴露到宿主机上,可以使用--publish参数,

#调整宿主机到容器内的端口映射,避免和宿主机上的端口冲突。

#比如 --publish 8880:80访问主机的8880,实际会转到容器的80端口

#--publish 2222:22访问主机的2222,实际是在访问gitlab容器的22端口


7.6如果编译的方式安装,可以使用MySQL数据库吗?

#强烈建议用户使用PostgreSQL而不是MySQL

#已使用MySQL的用户,也建议迁移到PostgreSQL

#容器的方式运行gitlab,不存在此问题。

 

7.7可以在Docker Toolbox下安装GitLab吗?

#建议使用本地化的方式安装Docker,不要使用Docker Toolbox方式安装。

 

、运行附图:

1-创建目录-运行容器-查看状态-正在启动中

 以容器的方式运行GitLab_第1张图片

5-gitlab容器的状态已正常

 

6-进入容器内部,查看gitlab容器信息

以容器的方式运行GitLab_第2张图片 

7-容器的主机名和IP地址

以容器的方式运行GitLab_第3张图片 

8-需要修改的网站URL

以容器的方式运行GitLab_第4张图片 

9-外部访问Gitlab的网址

以容器的方式运行GitLab_第5张图片 

A-重启gitlab容器以后,大约1分钟左右,容器的状态才从starting变为healthy

以容器的方式运行GitLab_第6张图片 

B-第一次访问gitlab.abc.com网站

以容器的方式运行GitLab_第7张图片 

C-使用root用户和修改后的密码登录到gitlab

 以容器的方式运行GitLab_第8张图片

D-容器重启后,如果时间未到,状态没有变为health,会报502错误

以容器的方式运行GitLab_第9张图片  

 

参考链接:

GitLab Docker images

https://docs.gitlab.com/omnibus/docker/

 

Configuration options

https://docs.gitlab.com/omnibus/settings/configuration.html

 

使用docker部署gitlab应用

http://www.jianshu.com/p/05e3bb375f64

 

gitlab-server环境搭建

http://www.cnblogs.com/gnool/p/6128546.html

 

gitlab / gitlab-ce

APT/YUM repository for GitLab Community Edition packages

https://packages.gitlab.com/gitlab/gitlab-ce/install

 

你可能感兴趣的:(Docker入门,软件编程)