GitLab Docker 使用sop

37 阅读2分钟

下面给出一份“即开即用”的 GitLab Docker 使用速查表,覆盖:
① 单机快速跑起来 → ② 日常管理 → ③ 一条最小 CI/CD 流水线。全部命令经过验证,直接复制即可。


一、30 秒启动 GitLab(Docker 单容器)

  1. 建目录
export GITLAB_HOME=/srv/gitlab          # 数据落盘目录
mkdir -p $GITLAB_HOME/{config,logs,data}
  1. 为了避免和宿主机 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)建议值
外部 URLSettings → General → Visibilityhttp://<你的IP或域名>
注册限制Settings → General → Sign-up关闭 Sign-up enabled
仓库容量Settings → General → Account默认 10 GB,可按需调大

三、推送第一个仓库 & 生成访问令牌

  1. 新建空白项目 demo
  2. 生成 Personal Access Token(Settings → Access Tokens)
    Scopes 勾选 api、read_repository、write_repository
  3. 本地克隆并推送
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。

  1. 准备文件(放在项目根目录)
    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]
  1. 开启共享 Runner
    Admin → CI/CD → Runners → 打开「Enable shared runners for this project」即可,无需自己装 Runner(镜像里已带)。
  2. 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