基于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