CentOS系统Docker容器部署GitLab教程
一、环境准备
本文实验环境为4核8G内存的CentOS 7.9.2009操作系统,需提前配置阿里云yum镜像源,并执行以下准备操作:
- 安装EPEL扩展源:
yum -y install epel-release - 禁用SELinux安全机制
- 关闭系统防火墙
二、Docker引擎部署
首先安装Docker运行所需的依赖包:
[root@server ~]# yum -y install yum-utils device-mapper-persistent-data lvm2
添加Docker官方镜像仓库,可选择阿里云镜像源提升下载速度:
[root@server ~]# yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
查看仓库中可供安装的Docker版本:
[root@server ~]# yum list docker-ce --showduplicates | sort -r
选择特定版本进行安装(生产环境建议锁定版本号):
[root@server ~]# yum -y install docker-ce-26.1.4-1.el7
启动Docker服务并设置为开机自启:
[root@server ~]# systemctl start docker
[root@server ~]# systemctl enable docker
Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /usr/lib/systemd/system/docker.service.
验证Docker安装版本:
[root@server ~]# docker version
Client: Docker Engine - Community
Version: 26.1.4
API version: 1.45
Go version: go1.21.11
Git commit: 5650f9b
OS/Arch: linux/amd64
Server: Docker Engine - Community
Engine:
Version: 26.1.4
API version: 1.45 (minimum version 1.24)
Go version: go1.21.11
Git commit: de5c9cf
OS/Arch: linux/amd64
三、镜像加速器配置
修改Docker守护进程配置,添加国内镜像加速地址:
[root@server ~]# cat > /etc/docker/daemon.json << 'EOF'
{
"registry-mirrors": [
"https://docker.m.daocloud.io",
"https://dockerproxy.com",
"https://docker.mirrors.ustc.edu.cn",
"https://docker.nju.edu.cn"
]
}
EOF
重新加载配置并重启Docker服务:
[root@server ~]# systemctl daemon-reload
[root@server ~]# systemctl restart docker
常用国内加速器对比
| 服务商 | 加速地址 | 支持范围 | 访问限制 |
|---|---|---|---|
| DaoCloud | https://docker.m.daocloud.io | Docker Hub、GCR、K8S、GHCR | 免费公开 |
| 网易 | https://hub-mirror.c.163.com | Docker Hub | 免费公开 |
| 上海交大 | https://docker.mirrors.sjtug.sjtu.edu.cn | Docker Hub、GCR | 无限制 |
| 南京大学 | https://docker.nju.edu.cn | Docker Hub、GCR、GHCR | 免费公开 |
| 阿里云 | https://<code>.mirror.aliyuncs.com | Docker Hub | 需账号获取 |
四、GitLab容器部署
设置GitLab数据存储根目录:
[root@server ~]# export GITLAB_ROOT=/gitlab-data
[root@server ~]# mkdir -p $GITLAB_ROOT/{config,logs,data}
执行GitLab容器启动命令:
[root@server ~]# docker run -d \
--hostname 192.168.142.105 \
--publish 8443:443 --publish 8080:80 \
--name gitlab-instance \
--restart always \
--volume $GITLAB_ROOT/config:/etc/gitlab \
--volume $GITLAB_ROOT/logs:/var/log/gitlab \
--volume $GITLAB_ROOT/data:/var/opt/gitlab \
--shm-size 256m \
gitlab/gitlab-ce:16.11.0-ce.0
查看镜像拉取及容器运行状态:
[root@server ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
gitlab/gitlab-ce 16.11.0-ce.0 7d0bcc8a3e52 2 weeks ago 2.65GB
[root@server ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
a3f8d2c1e4b6 gitlab/gitlab-ce:16.11.0-ce.0 "/assets/wrapper" 3 minutes ago Up 2 minutes (healthy) 0.0.0.0:8080->80/tcp, :::8080->80/tcp, 0.0.0.0:8443->443/tcp, :::8443->443/tcp gitlab-instance
获取初始管理员密码:
[root@server ~]# docker exec -it gitlab-instance grep 'Password:' /etc/gitlab/initial_root_password
Password: 8hX3kP9mNqW2vL5cR7tY6uE4sA1bF0gD3iO2qP8rS4jV7wX=
五、关键参数解析
容器运行模式
--detach:以守护进程模式在后台运行容器,不阻塞当前终端会话。
--restart always:配置容器自动重启策略,当Docker服务重启或容器异常退出时自动恢复运行。
网络配置
--hostname:设置容器内部主机名。本例设为IP地址192.168.142.105,生产环境推荐使用域名以便后期迁移维护。
--publish:端口映射将容器内服务端口暴露至宿主机。本例映射8080到HTTP 80端口,8443到HTTPS 443端口。注意确保宿主机对应端口未被占用。
外部访问地址配置
如需通过域名访问GitLab,可通过环境变量指定:
--env GITLAB_OMNIBUS_CONFIG="external_url 'http://gitlab.mydomain.com'"
需确保域名能正确解析至宿主机IP,可通过hosts文件或内网DNS服务器配置。
数据卷持久化
通过volume参数将容器内关键目录映射至宿主机,实现数据持久化:
- config目录:存储GitLab配置文件(/etc/gitlab)
- logs目录:存储运行日志(/var/log/gitlab)
- data目录:存储仓库数据、数据库文件(/var/opt/gitlab)
共享内存配置
--shm-size 256m:设置容器共享内存大小。GitLab内置的PostgreSQL数据库和Redis缓存服务依赖共享内存,Docker默认的64MB可能导致运行异常或性能下降,建议设置为256MB以上。
版本选择说明
生产环境强烈建议指定具体版本号,避免因镜像更新导致兼容性问题。可访问Docker Hub查看可用版本标签。
六、访问验证
容器完全启动约需3-5分钟时间,可通过以下命令查看启动进度:
[root@server ~]# docker logs -f gitlab-instance
启动完成后,通过浏览器访问 http://192.168.142.105:8080 或配置的域名,使用root用户名及初始密码登录管理后台。