[每周一更]-(第11期):CentOS7中使用Docker安装Gitlab打造一款私有代码仓库

本文档详述了如何在阿里云和腾讯云的CentOS7.264位环境中使用Docker部署GitLab,包括通过docker-compose和直接使用Docker引擎的方法。此外,还介绍了配置外部访问、设置备份、更新GitLab以及解决容器重启、内存限制等问题的方法。同时,提供了关于GitLab的数据库访问和错误信息处理的指导。

在这里插入图片描述

基础环境

配置1 - 采用 docker-compose run Gitlab

  • 平台:阿里云
  • 操作系统:CentOS 7.2 64位
  • 配置:8C16G
  • 带宽:8Mbps

配置2 - 采用 docker引擎直接 run Gitlab

卡,上生产建议升配置或转用其他云平台

  • 平台:腾讯云
  • 操作系统:CentOS 7.2 64位
  • 配置:2C4G
  • 带宽:10Mbps

步骤

官方文档
https://docs.gitlab.com/ee/install/docker.html

1、镜像拉取

docker pull gitlab/gitlab-ce

docker pull twang2218/gitlab-ce-zh    汉化

2、创建必要目录

# Linux用户,设置gitlab安装位置 /srv/gitlab
export GITLAB_HOME=/srv/gitlab

# 创建目录,数据、日志、配置
mkdir -p $GITLAB_HOME/data
mkdir -p $GITLAB_HOME/logs
mkdir -p $GITLAB_HOME/config

3、物理机和容器的目录对比

物理机地址容器地址备注
$GITLAB_HOME/data/var/opt/gitlab存储gitlab数据
$GITLAB_HOME/logs/var/log/gitlab存储日志
$GITLAB_HOME/config/etc/gitlab存储配置文件

4、启动容器

配置中物理机和容器内部都是非80端口访问,这里均用:9099

(1)直接启动容器-Install GitLab using Docker Engine(使用Docker引擎)

--privileged=true 让容器获取宿主机root权限

docker run --detach \
  --hostname xx.xx.xx.xx\
  --publish 8443:443 --publish 9099:9099 --publish 8222:22 \
  --name gitlab \
  --privileged=true \
  --restart always \
  --volume /srv/gitlab/config:/etc/gitlab \
  --volume /srv/gitlab/logs:/var/log/gitlab \
  --volume /srv/gitlab/data:/var/opt/gitlab \
  --ulimit sigpending=62793 \
  --ulimit nproc=131072 \
  --ulimit nofile=60000 \
  --ulimit core=0 \
  --shm-size 512m \
  gitlab/gitlab-ce:latest
  
  
(2)通过compose启动容器 - Install GitLab using Docker Compose(强烈推荐这种)

需要先能装 docker-compose ,参考:Linux 中 安装 docker-compose

参考:https://docs.gitlab.com/ee/install/docker.html#install-gitlab-using-docker-compose

# 1.创建yml文件
docker-compose.yml

# 2.填充内容
version: '3.6'
services:
  web:
    image: 'gitlab/gitlab-ce:latest'
    restart: always
    hostname: 'xx.xx.xx.xx'
    environment:
      GITLAB_OMNIBUS_CONFIG: |
        external_url 'http://xx.xx.xx.xx:9099'
        gitlab_rails['gitlab_shell_ssh_port'] = 8222
    ports:
      - '9099:9099'
      # - '8443:443'
      - '8222:22'
    volumes:
      - '$GITLAB_HOME/config:/etc/gitlab'
      - '$GITLAB_HOME/logs:/var/log/gitlab'
      - '$GITLAB_HOME/data:/var/opt/gitlab'
    # privileged: true
    shm_size: '1024m'


# 3.后台启动 (启动容器需要进容器重启配置)
docker-compose up -d

# 4.停止容器
docker-compose down


6、设置外部访问 Open /etc/gitlab/gitlab.rb with your editor and set external_url:

Expose GitLab on different ports,非80端口

# 进入容器
docker exec -it gitlab /bin/bash
docker exec -it gitlab-web-1 /bin/bash

# 设定外部访问地址
vi /etc/gitlab/gitlab.rb
external_url "http://xx.xx.xx.xx:9099"

# 设定 gitlab_shell_ssh_port:
gitlab_rails['gitlab_ssh_host']='xx.xx.xx.xx' 
gitlab_rails['gitlab_shell_ssh_port'] =8222 

# 确认容器配置端口也是9099
vi /opt/gitlab/embedded/service/gitlab-rails/config/gitlab.yml
修改host 与上面.rb文件修改的一致,修改port 为9099

# 重新配置 Gitlab - 运行这个即可
gitlab-ctl reconfigure


---------------------
    额外的配置
---------------------

gitlab的备份
vi /etc/gitlab/gitlab.rb(分别修改备份目录和备份保留时间)
gitlab_rails['backup_path'] = “/var/opt/gitlab/backups” (修改备份目录)
gitlab_rails['backup_keep_time'] = 604800 (7天,默认单位为s)

定时备份
0 23 * * * /usr/bin/gitlab-rake gitlab:backup:create

# 重启服务
gitlab-ctl restart

# 容器外重启gitlab
docker restart gitlab-web-1

7、更新gitlab

(1)Upgrade GitLab using Docker Engine

Take a backup. As a minimum, back up the database and the GitLab secrets file.

 docker stop gitlab
 
 docker rm gitlab
 
 docker pull gitlab/gitlab-ce:latest
 
 docker run --detach \
    --hostname xx.xx.xx.xx \
    --publish 8443:443 --publish 9099:9099 --publish 8222:22 \
    --name gitlab \
    --restart always \
    --volume $GITLAB_HOME/config:/etc/gitlab \
    --volume $GITLAB_HOME/logs:/var/log/gitlab \
    --volume $GITLAB_HOME/data:/var/opt/gitlab \
    --shm-size 1024m \
    gitlab/gitlab-ce:latest

(2)Upgrade GitLab using Docker compose
在存在yml文件的目录下执行命令

docker-compose pull
docker-compose up -d

8、登录

网页访问9099端口, 初始用户为root, root初始密码见

地址:xx.xx.xx.xx:9099
容器内部:vi etc/gitlab/initial_root_password
物理机:vim /srv/gitlab/config/initial_root_password

9、关于gitlab的说明

  • gitlab 默认的数据库是 PostgreSQL
  • 本地访问 PostgreSQL
sudo gitlab-rails dbconsole
或者
sudo gitlab-psql -d gitlabhq_production

输入\list查看所有数据库
输入select * from namespaces;查看 gitlab 中已经有了哪些用户。
输入select * from projects;查看有哪些项目文件
  • 远端访问待补充,参考地址:https://swmlee.com/2019/12/21/technicalessays/aboutgit/6remote-access-gitlab-ce-postgresql/

10、错误信息

(1)进入具体的容器,3s偶就会自动退出,就是无限重启 (配置1安装就没问题,现初步断定是硬件问题,有点像是腾讯云的锅)

原因:就是容器自己挂掉,我把restart: always 参数去掉

容器里的前台进程挂了,而你又设置了 restart=always 或是 restart=unless-stopped,就会反复在启动 -> 挂掉 -> 退出 -> 重启之间循环了。

如果你确定你这个镜像里有前台进程、或是你在 docker run 的时候指定了别的前台进程,那么你可以 docker inspect 看一下日志路径,然后把它挂载到宿主机上,慢慢分析吧。

看日志:docker logs gitlab


/opt/gitlab/embedded/bin/runsvdir-start: line 24: ulimit: pending signals: cannot modify limit: Operation not permitted
/opt/gitlab/embedded/bin/runsvdir-start: line 37: /proc/sys/fs/file-max: Read-only file system

设置:ulimit -n 1048576

docker exec -it gitlab update-permissions
docker restart gitlab
(2)更改Docker的shm(共享内存)大小

默认 64M,在设置yml配置可以追加参数:shm_size
或者

docker run -it --shm-size="1g"
(3)initial_root_password 即拥有密码的文件,不存在
  • 文件首次重新配置后的24小时将被删除
  • 设定下密码开启-不管用
#### Toggle if initial root password should be written to /etc/gitlab/initial_root_password
gitlab_rails['store_initial_root_password'] = true

重新删除最开始安装的文件夹:data、logs、config,重新能装就能看到该文件也能看到密码了;

### 在 CentOS 7使用 Docker 安装 GitLab 的详细步骤 以下是基于提供的引用内容和专业知识,为在 CentOS 7使用 Docker 安装 GitLab 提供的详细步骤: #### 1. 确保系统已安装 Docker 在开始之前,确保 CentOS 7 系统上已经安装并配置了 Docker。如果未安装,请运行以下命令来安装 Docker[^4]: ```bash sudo yum install -y docker sudo systemctl start docker sudo systemctl enable docker ``` #### 2. 创建必要的目录 为了持久化存储 GitLab 数据,需要创建个主机目录以挂载到容器内。运行以下命令创建目录: ```bash sudo mkdir -p /srv/docker/gitlab/{config,data,logs} ``` #### 3. 启动 MySQL 或 PostgreSQL 容器(可选) GitLab 需要个数据库服务。可以选择启动个独立的 MySQL 或 PostgreSQL 容器,或者直接使用包含数据库的 GitLab 镜像。以下是启动 MySQL 容器的示例: ```bash docker run --name gitlab-mysql -d \ -e MYSQL_ROOT_PASSWORD=your_password \ -e MYSQL_DATABASE=gitlabhq_production \ -e MYSQL_USER=gitlab \ -e MYSQL_PASSWORD=your_password \ mysql:5.7 ``` #### 4. 启动 GitLab 容器 使用 `docker run` 命令启动 GitLab 容器,并挂载数据目录和链接到数据库容器。以下是完整的命令[^1]: ```bash docker run --name gitlab -d \ --link gitlab-mysql:mysql \ -p 10022:22 -p 10080:80 \ -v /srv/docker/gitlab/config:/etc/gitlab \ -v /srv/docker/gitlab/logs:/var/log/gitlab \ -v /srv/docker/gitlab/data:/var/opt/gitlab \ sameersbn/gitlab:latest ``` - `-p 10022:22`:将容器的 SSH 端口映射到主机的 10022 端口。 - `-p 10080:80`:将容器的 HTTP 端口映射到主机的 10080 端口。 #### 5. 配置 GitLab 首次启动后,GitLab 将自动初始化配置。可以通过浏览器访问 `http://<服务器IP>:10080` 并按照提示完成初始设置。默认管理员密码可以在日志中找到,或通过以下命令查看: ```bash docker logs gitlab | grep "Password:" ``` #### 6. 常用管理命令 安装完成后,可以使用以下命令管理 GitLab 容器和服务[^3]: - **重启容器**: ```bash docker restart gitlab ``` - **停止容器**: ```bash docker stop gitlab ``` - **查看日志**: ```bash docker logs gitlab ``` #### 7. 卸载 GitLab 如果需要卸载 GitLab,可以执行以下步骤: 1. 停止并删除容器: ```bash docker stop gitlab docker rm gitlab ``` 2. 删除数据目录: ```bash sudo rm -rf /srv/docker/gitlab ``` --- ### 注意事项 - 确保服务器有足够的资源(至少 4GB 内存)以支持 GitLab 的正常运行[^4]。 - 如果需要高版本的 GitLab,可以替换 `sameersbn/gitlab:latest` 为具体的版本标签,例如 `sameersbn/gitlab:14.0.0`。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ifanatic

觉得对您有用,可以友情打赏

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值