在docker中安装gitlab
https://www.cnblogs.com/diaomina/p/12830449.html
拉取gitlab docker镜像
docker pull gitlab/gitlab-ce:latest配置存储
在运行GitLab前,需要先配置本地存储,留给GitLab使用。
可配置一个新的环境变量,$GITLAB_HOME 指向配置、日志和数据文件所在的目录。确保目录存在并且已授予适当的权限。
export GITLAB_HOME=/data/gitlab
# 如果嫌麻烦直接使用绝对路径也行,后续我将直接使用绝对路径主要是以下三个目录需要透出来存储
| Local location | Container location | Usage |
|---|---|---|
$GITLAB_HOME/data | /var/opt/gitlab | For storing application data. |
$GITLAB_HOME/logs | /var/log/gitlab | For storing logs. |
$GITLAB_HOME/config | /etc/gitlab | For storing the GitLab configuration files. |
在相应位置创建好/data,/logs,/config
运行GitLab并运行容器
sudo docker run \
--hostname git.alfredty.com \
-itd \
-p 9980:80 \
-p 9922:22 \
-v /data/gitlab/data:/var/opt/gitlab \
-v /data/gitlab/config:/etc/gitlab \
-v /data/gitlab/logs:/var/log/gitlab \
--restart always \
--shm-size 256m \
--name mygitlab \
gitlab/gitlab-ee
sudo docker run \
-itd \
-p 9980:80 \
-p 9922:22 \
--restart always \
--privileged=true -u root \
--name mygitlab \
gitlab/gitlab-ce命令解释: -i 以交互模式运行容器,通常与 -t 同时使用命令解释:
-t 为容器重新分配一个伪输入终端,通常与 -i 同时使用
-d 后台运行容器,并返回容器ID
-p 9980:80 将容器内80端口映射至宿主机9980端口,这是访问gitlab的端口
-p 9922:22 将容器内22端口映射至宿主机9922端口,这是访问ssh的端口
-v /data/gitlab/etc:/etc/gitlab 将容器/etc/gitlab目录挂载到宿主机/data/gitlab/etc:/etc/gitlab目录下,若宿主机内此目录不存在将会自动创建,其他两个挂载同这个一样
—restart always 容器自启动
—privileged=true 让容器获取宿主机root权限
—name gitlab 设置容器名称为gitlab
gitlab/gitlab-ce 镜像的名称,这里也可以写镜像ID
配置修改
进入容器内
docker exec -it mygitlab /bin/bash修改gitlab.rb
# 修改gitlab.rb
vi /etc/gitlab/gitlab.rb
## 加入如下
# gitlab访问地址,可以写域名。如果端口不写的话默认为80端口
external_url 'http://git.alfredty.com'
# ssh主机ip
gitlab_rails['gitlab_ssh_host'] = 'git.alfredty.com'
# ssh连接端口
gitlab_rails['gitlab_shell_ssh_port'] = 10088
# 让配置生效
gitlab-ctl reconfigure
# 重启
gitlab-ctl restart
# 退出容器
exitRoot密码
配置好后访问自己的gitlab页面,可以用以下命令获取登陆密码,密码文件将在 24 小时后的第一次重新配置运行中自动删除。
sudo docker exec -it mygitlab grep 'Password:' /etc/gitlab/initial_root_passwordgitlab-runner
启动
想要使用gitlab的CI/CD功能还需要有一个RUNNER,此为一个单独的docker
注意 -v /var/run/docker.sock:/var/run/docker.sock 不可或缺 这样在容器中装载/var/run/docker.sock,使构建的容器保存在宿主机本身的镜像存储中。
docker run -d --name gitlab-runner --restart always \
-v /data/gitlab-runner/config:/etc/gitlab-runner \
-v /var/run/docker.sock:/var/run/docker.sock \
gitlab/gitlab-runner:latest注册
启动一个临时docker注册,配置内容会写入/data/gitlab-runner/config
docker run --rm -it -v /data/gitlab-runner/config:/etc/gitlab-runner gitlab/gitlab-runner register执行后会要求输入gitlab中的url和令牌

- 输入您的 GitLab 实例 URL(也称为
gitlab-ci coordinator URL)。 - 输入您获得的令牌以注册Runner。
- 输入Runner的描述。您可以稍后在 GitLab 用户界面中更改此值。
- 输入与 runner 关联的标签,用逗号分隔。您可以稍后在 GitLab 用户界面中更改此值。
- 提供runner executor。对于大多数用例,请输入
docker。 - 如果您
docker作为执行人输入,系统会要求您提供默认image用于未在.gitlab-ci.yml配置.
注册结束后就可以在管理页面看到Runner了

修改配置
进入/data/gitlab-runner/config,修改config.toml,将volumes改为如下,这样在容器中装载/var/run/docker.sock,使构建的容器保存在宿主机本身的镜像存储中。
volumes = ["/var/run/docker.sock:/var/run/docker.sock", "/cache"]否则可能会报错 gitlab runner Cannot connect to the Docker daemon at unix ///var/run/docker.sock. Is the docker daemon running?