基于docker安装gitlab、nexus、registry

gitlab

GitLab 是利用 Ruby on Rails 一个开源的版本管理系统,实现一个自托管的 Git 项目仓库,可通过 Web 界面进行访问公开的或者私人项目。它拥有与 Github 类似的功能,能够浏览源代码,管理缺陷和注释。可以管理团队对仓库的访问,它非常易于浏览提交过的版本并提供一个文件历史库。团队成员可以利用内置的简单聊天程序 (Wall) 进行交流。它还提供一个代码片段收集功能可以轻松实现代码复用,便于日后有需要的时候进行查找。

安装

在/usr/local/docker/gitlab文件夹中创建docker-compose.yml

version: '3'
services:
    web:
      image: 'twang2218/gitlab-ce-zh:版本号'
      restart: always
      hostname: 'IP'
      environment:
        TZ: 'Asia/Shanghai'
        GITLAB_OMNIBUS_CONFIG: |
          external_url 'http://IP'
          gitlab_rails['gitlab_shell_ssh_port'] = 2222
          unicorn['port'] = 8888
          nginx['listen_port'] = 80
      ports:
        - '80:80'
        - '8443:443'
        - '2222:22'
      volumes:
        - /usr/local/docker/gitlab/config:/etc/gitlab
        - /usr/local/docker/gitlab/data:/var/opt/gitlab
        - /usr/local/docker/gitlab/logs:/var/log/gitlab

由于gitlab需要较高的配置,所以虚拟机应分得最少2G内存,启动快慢跟计算机的配置有关

nexus

Nexus 是一个强大的仓库管理器,极大地简化了内部仓库的维护和外部仓库的访问。

安装

同理在/usr/local/docker/nexus/ 目录下创建docker-compose.yml

version: '3.1'
services:
  nexus:
    restart: always
    image: sonatype/nexus3:版本号
    container_name: nexus
    ports:
      - 8081:8081
    volumes:
      - /usr/local/docker/nexus/data:/nexus-data

如果没有权限的话需要为data目录加上权限:chmod 777 /usr/local/docker/nexus/data

安装完成之后 用户名为admin 密码根据提示查找
同gitlab一样,启动需要较长的时间

Docker Registry

官方的 Docker Hub 是一个用于管理公共镜像的地方,我们可以在上面找到我们想要的镜像,也可以把我们自己的镜像推送上去。但是,有时候我们的服务器无法访问互联网,或者你不希望将自己的镜像放到公网当中,那么你就需要 Docker Registry,它可以用来存储和管理自己的镜像。

安装

同理,需要在/usr/local/docker/registry/目录中创建docker-compose

version: '3.1'
services:
  registry:
image: registry:版本号
restart: always
container_name: registry
ports:
  - 5000:5000
volumes:
  - /usr/local/docker/registry/data:/var/lib/registry
配置docker registry客户端

在 /etc/docker/daemon.json中添加此内容

{
  "registry-mirrors": [
    "https://registry.docker-cn.com"
  ],
  "insecure-registries": [
    "ip:5000"
  ]
}

之后重新启动docker

$ sudo systemctl daemon-reload
$ sudo systemctl restart docker

用docker info查询是否生效

部署 Docker Registry WebUI

私服安装成功后就可以使用 docker 命令行工具对 registry 做各种操作了。然而不太方便的地方是不能直观的查看 registry 中的资源情况。如果可以使用 UI 工具管理镜像就更好了。这里介绍两个 Docker Registry WebUI 工具

docker-registry-frontend
version: '3.1'
services:
  frontend:
    image: konradkleine/docker-registry-frontend:v2
    ports:
      - 8080:80
    volumes:
      - ./certs/frontend.crt:/etc/apache2/server.crt:ro
      - ./certs/frontend.key:/etc/apache2/server.key:ro
    environment:
      - ENV_DOCKER_REGISTRY_HOST=192.168.75.133
      - ENV_DOCKER_REGISTRY_PORT=5000

ps:此配置可以在docker registry的docker-compose.yml中添加

访问 http://ip:8080