1.拉取镜像
docker pull gitlab/gitlab-ce
解释:gitlab-ce为稳定版本,如果没指定版本则默认pull最新latest版本。
2.运行镜像
docker run --detach --hostname localhost --publish 443:443 --publish 9999:80 --publish 222:22 --name gitlab --restart always --volume /Users/Shared/docker/gitlab/config:/etc/gitlab --volume /Users/Shared/docker/gitlab/log:/var/log/gitlab --volume /Users/Shared/docker/gitlab/data:/var/opt/gitlab gitlab/gitlab-ce:latest
解释:运行gitlab/gitlab-ce:latest镜像,配置项如下
-
–detach:后台运行,如果去掉,会看到执行的整个过程日志。
-
–hostname:指定运行的 hostname,可以是域名也可以是 IP。
-
–publish:端口的映射,可以缩写成 -p 443, 用于 HTTPS 协议访问,222 用户 SSH 协议访问。9999映射80端口。
-
–name:容器的名称。
-
–volume:指定本地卷,配置、日志、数据。可以缩写为-v,使用本地卷后,删除容器,不会删除配置、数据。
-
–restart:重启的方式,会自动重启,共有五种策略:
no:默认策略,在容器退出时不重启容器 on-failure:在容器非正常退出时(退出状态非 0),才会重启容器 on-failure:3:在容器非正常退出时重启容器,最多重启 3 次 always:在容器退出时总是重启容器 unless-stopped:在容器退出时总是重启容器,但是不考虑在 Docker 守护进程启动时就已经停止了的容器
3.查看gitlab初始密码
docker exec -it f10 grep 'Password:' /etc/gitlab/initial_root_password
解释:f10 是gitlab的容器id
4. 修改默认的初始密码
docker exec -it f10 /bin/bash
#进入gitlab容器内部
gitlab-rails console -e production
#进入gitlab控制台
user = User.find_by(email:'admin@example.com')
#搜索用户
user.password ='12345678'
#修改密码,至少8位
user.password_confirmation ='12345678'
user.save!
#保存
exit
#退出gitlab控制台
exit
#退出gitlab容器内部
5.登录gitlab
第二步运行镜像时,设置了hostname为locahost,端口为9999。
所以在浏览器输入localhost:9999即可访问gitlab的登录页面。
用户名:root
密码:12345678
6.遇到问题
问题一:
在之前运行镜像时通过-v命令挂载文件到本地时设置的目录为/usr/local/var
,发现并没有挂载成功;后面查阅资料如果是mac系统,应该将挂载目录设在/Users/Shared/
下;重新运行镜像挂载目录之后发现在/Users/Shared/目录下多出了许多的文件,挂载成功。
问题二:
镜像启动总是失败,查询/Users/Shared/docker/gitlab/log/reconfigure下的日志,发现报错如下:
查阅资料需要修改/Users/Shared/docker/gitlab/config目录下的gitlab.rb配置文件,将git_data_dirs中的默认路径改为/data/gitlab,重启镜像即可。
问题三:
在前几次安装配置尝试过程中,最后访问IP时总会报如下图的错误。
(1)通过上网查阅说gitlab特别耗内存,如果内存太小会使得gitlab一直在启动中,没有彻底启动起来。
所以我又将docker的内存往大调了调,再重启镜像。
(2)另一个原因是在启动命令中最好不要使用常用的端口(所以上面我用了9999端口),常用端口容器如果
被其他进程占用,也会导致无法正常访问gitlab。
调整内存:
7.修改gitlab的hostname
在上面运行镜像的命令中将hostname设置成了localhost,现在想更改(方便外部访问最好不要设置为localhost)就需要做如下的配置。
docker exec -it f10 /bin/bash #进入容器内部
cd /var/opt/gitlab/gitlab-rails/etc #进到此目录下
vi gitlab.yml #修改此文件中的host,如下图
最后再重启gitlab镜像: docker restart f10
8.设置gitlab外部访问路径url
gitlab成功启动之后,新建了一个项目,在copy项目地址链接时发现无端口。而且在之后cicd部署时总是报错无法访问localhost:80。查阅资料需要配置外部访问的url:
修改/Users/Shared/docker/gitlab/config目录下的gitlab.rb配置文件,如图添加下面这行配置:
注意:这里将端口改为了9999,则在启动镜像时映射的端口就不是80了,而是-p 9999:9999,将容器内部的9999端口映射到9999端口。(这是一个大坑)
9.使用docker安装软件的好处
Docker 安装、卸载、更新应用的指令都是统一的,卸载后除了本地卷以外不会留下缓存,不会影响下一次操作的内容。安装软件就怕一些流氓软件,卸载后始终占有很大内存,如果改变了一些系统配置,还有可能影响到其他软件的安装。用 Docker 就不会,因为他是使用封闭的线程去启动的应用。