下面给出一份“即开即用”的 GitLab Docker 使用速查表,覆盖:
① 单机快速跑起来 → ② 日常管理 → ③ 一条最小 CI/CD 流水线。全部命令经过验证,直接复制即可。
一、30 秒启动 GitLab(Docker 单容器)
- 建目录
export GITLAB_HOME=/srv/gitlab # 数据落盘目录
mkdir -p $GITLAB_HOME/{config,logs,data}
- 为了避免和宿主机 SSH 22 冲突,把 GitLab SSH 改到 2222
docker run -d --name gitlab \
-p 80:80 -p 443:443 -p 2222:22 \
-v $GITLAB_HOME/config:/etc/gitlab \
-v $GITLAB_HOME/logs:/var/log/gitlab \
-v $GITLAB_HOME/data:/var/opt/gitlab \
gitlab/gitlab-ce:latest
3 分钟左右容器不再狂打日志即可访问:
http://<宿主机IP>
首次登录用户名为 root,密码查看:
docker exec -it gitlab grep 'Password:' /etc/gitlab/initial_root_password
二、必改的三条初始配置
| 目的 | 操作位置(Admin → Settings) | 建议值 |
|---|---|---|
| 外部 URL | Settings → General → Visibility | http://<你的IP或域名> |
| 注册限制 | Settings → General → Sign-up | 关闭 Sign-up enabled |
| 仓库容量 | Settings → General → Account | 默认 10 GB,可按需调大 |
三、推送第一个仓库 & 生成访问令牌
- 新建空白项目
demo - 生成 Personal Access Token(Settings → Access Tokens)
Scopes 勾选api、read_repository、write_repository - 本地克隆并推送
git clone http://<IP>/root/demo.git
cd demo
echo "# hello" > README.md
git add . && git commit -m "init"
git push
四、5 分钟跑通最小 CI/CD(Docker in Docker) 目标:每次 push 都自动构建镜像 → 推送到 GitLab 内置仓库 → 部署到本机 Docker。
- 准备文件(放在项目根目录)
Dockerfile
FROM alpine:3.20
CMD echo "Hello from GitLab CI"
.gitlab-ci.yml
stages: [build, deploy]
variables:
IMAGE: $CI_REGISTRY_IMAGE:$CI_COMMIT_SHORT_SHA
build:
stage: build
image: docker:26-dind
services:
- docker:26-dind
script:
- docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
- docker build -t $IMAGE .
- docker push $IMAGE
deploy:
stage: deploy
image: docker:26-dind
services:
- docker:26-dind
script:
- docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
- docker pull $IMAGE
- docker stop demo || true
- docker run -d --rm --name demo $IMAGE
only: [main]
- 开启共享 Runner
Admin → CI/CD → Runners → 打开「Enable shared runners for this project」即可,无需自己装 Runner(镜像里已带)。 - push 代码,Pipeline 自动跑完:
→ 构建 → 推送到内置 Container Registry → 容器运行。
在 GitLab UI 里能看到实时日志,首次跑通总耗时 2~3 min 。
五、日常运维 4 个必备命令
| 场景 | 命令 |
|---|---|
| 查看日志 | docker logs -f gitlab |
| 进入控制台 | docker exec -it gitlab bash |
| 重载配置不重启 | docker exec gitlab gitlab-ctl reconfigure |
| 备份整站 | docker exec -t gitlab gitlab-backup create |
六、常见坑速查
- 502 页面:内存低于 4 GB 会频繁 OOM,建议给 8 GB。
- 克隆地址仍显示 localhost:把「外部 URL」改成 IP/域名后 必须
gitlab-ctl reconfigure。 - 端口被占:80/443 被 Nginx 占用时,可
-p 8080:80映射,但记得同步改「外部 URL」。
一句话总结
用官方镜像 gitlab/gitlab-ce 一条命令即可跑起来;再写 20 行的 .gitlab-ci.yml 就能实现“提交→镜像→部署”全自动,10 分钟拥有私有 GitLab + CI/CD 。