docker部署Gitlab教程
它拥有与Github类似的功能,能够浏览源代码,管理缺陷和注释。可以管理团队对仓库的访问,它非常易于浏览提交过的版本并提供一个文件历史库。团队成员可以利用内置的简单聊天程序(Wall)进行交流。它还提供一个代码片段收集功能可以轻松实现代码复用,便于日后有需要的时候进行查找。开源中国代码托管平台git.oschina.net就是基于GitLab项目搭建。
容器 | 虚拟机 | |
---|---|---|
启动 | 秒级 | 分钟级 |
硬盘使用 | 一般为MB |
一般为GB |
性能 | 接近原生 | 弱于 |
系统支持量 | 单机支持上千个容器 |
docker使用客户端-服务端(C/S)架构模式,使用远程API来管理和创建docker容器。
docker容器通过docker镜像来创建。
标题 | 说明 |
---|---|
镜像(images) | Docker镜像是用于创建Docker容器的模板。 |
容器(Container) | 容器是独立运行的一个或一组应用。 |
客户端(Client) | docker客户端通过命令行或者其他工具使用Docker API与Docker的守护进程通信。 |
主机(Host) | 一个物理或者虚拟机的机器用于执行Docker守护进程和容器。 |
仓库(Registry) | Docker仓库用来保存镜像,可以理解为代码控制中的代码仓库。Docker Hub提供了庞大的镜像集合供使用。 |
Docker Machine |
内存 | ip | |
---|---|---|
docker01 | 3G |
安装docker
注意:这里我们是从清华源上面下载的docker
wget -O /etc/yum.repos.d/docker-ce.repo https://download.docker.com/linux/centos/docker-ce.repo sed -i 's+download.docker.com+mirrors.tuna.tsinghua.edu.cn/docker-ce+' /etc/yum.repos.d/docker-ce.repo yum install docker-ce -y systemctl start docker && systemctl enable docker [root@docker01 ~]# docker version Client: Docker Engine - Community Version: 19.03.3 API version: 1.40 Go version: go1.12.10 Git commit: a872fc2f86 Built: Tue Oct 8 00:58:10 2019 OS/Arch: linux/amd64 Experimental: false
加速教程,当配置某一个加速器地址之后,若发现拉取不到镜像,请切换到另一个加速器地址。centos7安装docker之后没有daemon.json文件,需要自己动手创建一个
mkdir -p /etc/docker tee /etc/docker/daemon.json <<-'EOF' { "registry-mirrors": ["https://4pwh0wn5.mirror.aliyuncs.com"] } EOF #更新配置 sudo systemctl daemon-reload sudo systemctl restart docker
docker search gitlab #查看镜像
docker pull gitlab/gitlab-ce #拉取
#创建 config 目录 mkdir -p /home/gitlab/config #创建 logs 目录 mkdir -p /home/gitlab/logs #创建 dat 目录 mkdir -p /home/gitlab/data
docker run -d \ --hostname 10.0.0.11 \ --network --publish 7001:443 --publish 7002:80 --publish 7003:22 \ --name gitlab \ --restart always \ --volume /home/gitlab/config:/etc/gitlab \ --volume /home/gitlab/logs:/var/log/gitlab \ --volume /home/gitlab/data:/var/opt/gitlab \ gitlab/gitlab-ce
参数说明:
参数名称 | 参数说明 |
---|---|
detach | 指定容器运行于前台还是后台 |
hostname | 指定主机地址,如果有域名可以指向域名 |
publish | 指定容器暴露的端口,左边的端口代表宿主机的端口,右边代表容器的端口 |
name | 容器名字 |
restart always | 跟随docker服务启动 |
volume |
external_url 'http://10.0.0.11' gitlab_rails['gitlab_ssh_host'] = '' gitlab_rails['gitlab_shell_ssh_port'] = 703 #配置gitlab通过smtp发送邮件 gitlab_rails['gitlab_email_enabled'] = true gitlab_rails['gitlab_email_from'] = '1354586675@qq.com' gitlab_rails['gitlab_email_display_name'] = 'china' gitlab_rails['smtp_enable'] = true gitlab_rails['smtp_address'] = "smtp.qq.com" gitlab_rails['smtp_port'] = 465 gitlab_rails['smtp_user_name'] = "1354586675@qq.com" gitlab_rails['smtp_password'] = "xxxxxx" gitlab_rails['smtp_domain'] = "qq.com" gitlab_rails['smtp_authentication'] = "login" gitlab_rails['smtp_enable_starttls_auto'] = true gitlab_rails['smtp_tls'] = true
docker exec -it gitlab /bin/bash #进入gitlab容器服务
gitlab-ctl reconfigure #重置gitlab客户端的命令
docker restart gitlab #这里重启容器也需要耐心等待。
[root@docker01 ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 67b087a72785 gitlab/gitlab-ce "/assets/wrapper" 41 minutes ago Up 34 minutes (healthy) 0.0.0.0:7003->22/tcp, 0.0.0.0:7002->80/tcp, 0.0.0.0:7001->443/tcp gitlab [root@docker01 ~]# netstat -lnt Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN tcp6 0 0 :::22 :::* LISTEN tcp6 0 0 :::7001 :::* LISTEN tcp6 0 0 :::7002 :::* LISTEN tcp6 0 0 :::7003 :::* LISTEN
gitlab-ctl reconfigure // 重新应用 gitlab 的配置 gitlab-ctl restart // 重启 gitlab 服务 gitlab-ctl status // 查看 gitlab 运行状态 gitlab-ctl stop // 停止 gitlab 服务 gitlab-ctl tail // 查看 gitlab 运行日志
注:这里并没有像其他博主修改什么端口,在创建容器时也需要查看端口是否被占用,如果被占用会出现502的报错。