Linux安装Docker GitLab详细图文
1.前言
配置查询:
安装一个screenfetch 工具(忽略)
# 下载 screenfetch 脚本
sudo wget -O /usr/bin/screenfetch https://raw.githubusercontent.com/KittyKatt/screenFetch/master/screenfetch-dev
# 赋予执行权限
sudo chmod +x /usr/bin/screenfetch
# 验证安装
screenfetch

2.安装Docker拉取镜像
步骤 1:卸载旧版本(如果已安装)
sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
如果您是第一次安装,此步骤可跳过。系统会提示“未找到匹配的包”,这是正常的。
步骤 2:安装必要的工具和驱动
Docker 需要 yum-utils 工具来管理仓库,并且推荐使用 overlay2 存储驱动。
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
步骤 3:添加 Docker 官方 Yum 仓库
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
步骤 4:安装 Docker Engine
sudo yum install -y docker-ce docker-ce-cli containerd.io
docker-ce: Docker 社区版引擎。
docker-ce-cli: Docker 命令行界面。
containerd.io: 容器运行时。
步骤 5:启动并设置 Docker 开机自启
# 启动 Docker 服务
sudo systemctl start docker
# 设置开机自动启动
sudo systemctl enable docker
# 检查 Docker 服务状态
sudo systemctl status docker
如果看到 active (running),说明 Docker 已成功启动。
步骤 6:验证安装
运行一个简单的 Hello World 容器来验证一切是否正常:
sudo docker run hello-world
如果看到类似下面的输出,恭喜您,Docker 安装成功!
Hello from Docker!
This message shows that your installation appears to be working correctly.
...
步骤 7:配置可用镜像仓库,镜像加速
/etc/docker/daemon.json配置文件
{
"registry-mirrors": [
"https://docker.1panel.live",
"https://docker.1ms.run"
]
}
修改后需要重启 Docker 服务使配置生效:
# 重启 Docker
sudo systemctl daemon-reload
sudo systemctl restart docker
# 验证配置是否生效
docker info | grep "Registry Mirrors" # 查看镜像加速是否生效

3.安装gitlab
1.使用以下命令拉取最新的 GitLab 社区版(CE)镜像
docker pull gitlab/gitlab-ce:latest
拉取完成后,查看已下载的镜像:
确保 Docker 服务运行:使用以下命令确认 Docker 已启动并设置开机自启。
sudo systemctl start docker
sudo systemctl enable docker
2.创建数据持久化目录
为防止容器删除后数据丢失,需要建立目录映射容器内的数据
mkdir -p /root/gitlab/{config,logs,data}
此命令会创建三个目录,分别用于存储 GitLab 的配置、日志和应用数据
3.使用docker-compose.yml部署
创建一个docker-compose.yml编写内容:
重新写个了docker-compose.yml文件,成功了,找出原因:
version: '3.8' # 建议使用 3.8 版本
services:
web:
image: 'gitlab/gitlab-ce:latest' # 您已下载的镜像
container_name: gitlab # 明确指定容器名,便于管理
restart: always
hostname: '192.168.26.133' # 强烈建议改为您的虚拟机IP,而非 'gitlab'[3,7](@ref)
environment:
TZ: 'Asia/Shanghai'
GITLAB_OMNIBUS_CONFIG: |
external_url 'http://192.168.26.133:8929' # 此处也必须使用IP,与hostname保持一致[3,6,7](@ref)
gitlab_rails['gitlab_shell_ssh_port'] = 2222 # 明确告知GitLab SSH端口[1,3](@ref)
nginx['listen_port'] = 80 # 确保Nginx监听80端口[1](@ref)
nginx['redirect_http_to_https'] = false
# 性能优化配置(适合有限资源)
postgresql['shared_buffers'] = "256MB"
unicorn['worker_processes'] = 2
sidekiq['concurrency'] = 5
prometheus_monitoring['enable'] = false
ports:
- '8929:80' # HTTP访问端口
- '2222:22' # SSH克隆端口
volumes:
- './config:/etc/gitlab'
- './logs:/var/log/gitlab'
- './data:/var/opt/gitlab'
shm_size: '256m'
networks:
- gitlab-net # 建议使用自定义网络
networks:
gitlab-net:
driver: bridge
创建目录并编写配置文件,在您计划运行 GitLab 的目录下,创建 docker-compose.yml文件,并将上面调整后的内容粘贴进去。
确保当前目录下还没有 config, logs, data这些子目录,Docker Compose 会在启动时自动创建它们。
Docker Compose 文件(带详细注释)
# 指定 Docker Compose 配置文件的格式版本。'3.8' 是一个较新且稳定的版本,兼容 Docker Engine 19.03.0+ [3,7](@ref)
version: '3.8'
# 定义本文件要创建和管理的所有服务(容器)[3,7](@ref)
services:
# 定义一个名为 'web' 的服务,名称可自定义,后续管理命令会用到[3](@ref)
web:
# 指定容器使用的镜像。'gitlab/gitlab-ce:latest' 表示使用 GitLab 社区版的最新镜像[3,7](@ref)
image: 'gitlab/gitlab-ce:latest'
# 为容器指定一个自定义名称,便于后续使用 docker 命令进行管理(如 docker logs gitlab)[3](@ref)
container_name: gitlab
# 设置容器的重启策略。'always' 表示无论容器因何退出,Docker 都会自动重启它[3,7](@ref)
restart: always
# 设置容器内部使用的主机名。通常设置为外部可访问的域名或IP地址,这与 GitLab 的配置密切相关[3,5](@ref)
hostname: '192.168.26.133'
# 设置容器内的环境变量,这些变量会影响容器的运行行为[3,7](@ref)
environment:
# 设置容器的时区为亚洲/上海,使日志和时间记录与本地时间一致[2](@ref)
TZ: 'Asia/Shanghai'
# GITLAB_OMNIBUS_CONFIG 是 GitLab 官方镜像的特殊环境变量,用于在启动时内嵌 GitLab 配置[3](@ref)
GITLAB_OMNIBUS_CONFIG: |
# 设置 GitLab 的外部访问地址。必须与 hostname 匹配,用于生成仓库克隆链接等[3](@ref)
external_url 'http://192.168.26.133:8929'
# 明确设置 GitLab Shell 通过 SSH 克隆仓库时使用的端口,因为宿主机映射了非标准端口(2222)[1,3](@ref)
gitlab_rails['gitlab_shell_ssh_port'] = 2222
# 确保 Nginx (GitLab 的内置 Web 服务器) 监听容器内的 80 端口[1](@ref)
nginx['listen_port'] = 80
# 禁用 HTTP 到 HTTPS 的重定向。如果未配置 SSL,此项必须为 false[2](@ref)
nginx['redirect_http_to_https'] = false
# 以下为 GitLab 性能调优参数,适用于资源有限的环境(如虚拟机)[2](@ref)
# 设置 PostgreSQL 数据库使用的共享内存大小[2](@ref)
postgresql['shared_buffers'] = "256MB"
# 减少 GitLab 主应用服务器(Unicorn)的 worker 进程数,以降低内存消耗[2](@ref)
unicorn['worker_processes'] = 2
# 减少 GitLab 后台任务处理器(Sidekiq)的并发线程数,以降低内存消耗[2](@ref)
sidekiq['concurrency'] = 5
# 禁用 Prometheus 监控系统及其相关的节点导出器,以减少资源开销[2](@ref)
prometheus_monitoring['enable'] = false
# 将容器的端口映射到宿主机,格式为 '宿主机端口:容器端口'[3,7](@ref)
ports:
# 将容器的 80 端口 (HTTP) 映射到宿主机的 8929 端口。访问 http://宿主机IP:8929[3](@ref)
- '8929:80'
# 将容器的 22 端口 (SSH) 映射到宿主机的 2222 端口。用于 Git 的 SSH 克隆与推送操作[3](@ref)
- '2222:22'
# 定义数据卷挂载,将容器内的路径持久化到宿主机,防止数据因容器销毁而丢失[3,7](@ref)
volumes:
# 将宿主机当前目录下的 './config' 目录挂载到容器的 '/etc/gitlab',持久化 GitLab 配置文件[3](@ref)
- './config:/etc/gitlab'
# 将宿主机当前目录下的 './logs' 目录挂载到容器的 '/var/log/gitlab',持久化 GitLab 日志文件[3](@ref)
- './logs:/var/log/gitlab'
# 将宿主机当前目录下的 './data' 目录挂载到容器的 '/var/opt/gitlab',持久化应用数据(仓库、数据库等)[3](@ref)
- './data:/var/opt/gitlab'
# 设置容器的共享内存大小(shm_size)。GitLab 需要足够的共享内存才能正常运行,例如用于处理大型仓库[3](@ref)
shm_size: '256m'
# 指定该服务连接到一个或多个自定义网络[3,7](@ref)
networks:
# 连接到名为 'gitlab-net' 的网络(该网络需在文件下方的 networks 部分定义)[3](@ref)
- gitlab-net
# 定义所有服务中可能使用的自定义网络[3,7](@ref)
networks:
# 定义一个名为 'gitlab-net' 的桥接网络[3](@ref)
gitlab-net:
# 指定该网络的驱动为 'bridge',这是单机环境下最常用的网络驱动[3,7](@ref)
driver: bridge
4.启动 GitLab 服务
# 在包含 docker-compose.yml 文件的目录下执行
sudo docker-compose down
sudo docker-compose up -d
-d参数表示后台运行。首次启动会初始化,可能需要 5-10 分钟甚至更久(取决于资源),请耐心等待
检查启动状态
# 查看容器状态,直到状态变为 "healthy" (或通过日志查看进度)
sudo docker-compose ps
# 实时查看日志(Ctrl+C 退出)
sudo docker-compose logs -f
当您看到类似 gitlab Reconfigured! 的日志时,说明启动完成。
5.访问 GitLab
使用命令,看是否启动成功
curl -I http://localhost:8929
如图所示即为成功
外部打开浏览器,访问 http://:8929。启动成功
查看初始密码:
docker exec -it gitlab cat /etc/gitlab/initial_root_password


更多推荐


所有评论(0)