Docker----搭建自己的gitlab(填坑之旅)
在成功完成docker的基础实验之后,尝试着使用docker搭建自己的gitlab,用来存放自己的代码。本文主要介绍使用docker搭建gitlab过程中遇到的问题,我的服务器系统是:Ubuntu Server 14.04.1 LTS 64位
在搭建过程中遇到了很多问题,比较突出的三个问题是:
1.docker下载镜像缓慢,每次需要大概几个小时;
2.docker下载完成之后,运行镜像服务器死机;
3.docker安装并成功运行gitlab容器之后,访问gitlab发现一直出现502错误。
下面将这三个问题穿插在安装搭建gitlab过程中进行解决,有的问题解决方案可能不止一种,也有的问题会与服务器的版本,服务器的配置相关。
一、gitlab镜像安装准备工作
1.对于上述提到的第三个问题,因为我的服务器配置比较low(1G,50G),而GitLab对系统硬件有要求,主要就是内存大于2G,否则或碰到奇怪的错误。所以我经过几次尝试安装一直显示502错误(纠结了三四天,查了两天的资料)。没办法,穷啊,那只有找解决方案。终于找到一篇相关的文章小型云服务器搭建GitLab遇到的坑 ,核心思想是增加服务器的swap空间。这个问题竟然成功解决。
查看内存信息:
sudo free -h
ubuntu@VM-50-13-ubuntu:~$ free -h
total used free shared buffers cached
Mem: 993M 181M 812M 376K 34M 77M
-/+ buffers/cache: 70M 923M
Swap: 0B 0B 0B
可以看到swap的空间为0B ,接下来增加swap空间具体操作:
sudo -i # 切换root权限
dd if=/dev/zero of=/var/swap bs=1024 count=2048000 #分区大小设为2g
ls -lh /var/swap # 验证
mkswap /var/swap #启动分区
swapon /var/swap #激活
执行完上述命令,再次使用free -h命令可以看到Swap变成2GB
二、安装完成docker(可参考docker----起步)。
在下载镜像的时候,发现下载的很慢,很捉鸡。需要配置加速器,docker----起步文章中配置的加速器,好像与我的系统似乎不搭噶,最后看腾讯云的镜像加速器才发现,我配置加速器的地方错了,因为我的系统是Ubuntu14 所以应该配置在/etc/default/docker中。最后我将加速器配置成阿里云的镜像加速器 在注册完成之后,我获得了我的专属加速器地址(虽然不知道真假),具体查看方式是,在容器镜像服务-->镜像加速器中可以看到。
vim /etc/default/docker #然后修改其中的DOCKER_OPTS
如我的配置修改结果为:
# Use DOCKER_OPTS to modify the daemon startup options.
DOCKER_OPTS="--registry-mirror=https://dg9t1zch.mirror.aliyuncs.com" # 改地址为阿里云给我的镜像加速器地址
重启docker服务后,然后执行 sudo docker info ,可以看到输出中有如下信息:
Registry Mirrors:
https://dg9t1zch.mirror.aliyuncs.com/
然后下载镜像,我这里的镜像是阿里云上的一个镜像,执行命令,你会发现下载速度非常快:
docker run --detach \
--publish 443:443 --publish 10080:80 --publish 22:22 \
--name gitlab \
--restart always \
--volume /srv/gitlab/config:/etc/gitlab \
--volume /srv/gitlab/logs:/var/log/gitlab \
--volume /srv/gitlab/data:/var/opt/gitlab \
twang2218/gitlab-ce-zh:latest # 该镜像是aliyun上的一个镜像,地址https://cr.console.aliyun.com/#/imageDesc/cn-hangzhou/lab99/gitlab-ce-zh/detail
三、SSH端口和这里的22端口可能会有冲突,导致连接不上去,因此设置ssh端口为别的端口就可以了
vim /etc/ssh/sshd_config # 找到里边对应的Port,将22修改为1022或别的端口
重启ssh服务。
然后访问服务器地址+10080端口,有时候还是会出现502错误,需要稍等一会,然后重新刷新几次就可以了。
看到配置完成的gitlab特别开心=-=。
Docker----搭建自己的gitlab(填坑之旅)的更多相关文章
- 使用vue开发微信公众号下SPA站点的填坑之旅
原文发表于本人博客,点击进入使用vue开发微信公众号下SPA站点的填坑之旅 本文为我创业过程中,开发项目的填坑之旅.作为一个技术宅男,我的项目是做一个微信公众号,前后端全部自己搞定,不浪费国家一分钱^ ...
- stm32填坑之旅 - stm32f103c8t6点亮板载贴片蓝色LED
转载请注明:https://www.cnblogs.com/rockyf/p/11691622.html 开篇 开篇一定要精彩,不然路人不理睬!下述是笔者作为arm小白的填坑之旅 没错,这个之前一直从 ...
- bootstrap-table填坑之旅<一>认识bootstrap-table
应公司需求,改版公司ERP的数据显示样式.由于前期开发的样式是bootstrap,所以选bootstrap-table理所当然(也是因为看了bootstrap-table官网的example功能强大, ...
- React Native填坑之旅--与Native通信之iOS篇
终于开始新一篇的填坑之旅了.RN厉害的一个地方就是RN可以和Native组件通信.这个Native组件包括native的库和自定义视图,我们今天主要设计的内容是native库方面的只是.自定义视图的使 ...
- React Native填坑之旅--Flow篇(番外)
flow不是React Native必会的技能,但是作为正式的产品开发优势很有必要掌握的技能之一.所以,算是RN填坑之旅系列的番外篇. Flow是一个静态的检查类型检查工具,设计之初的目的就是为了可以 ...
- React Native填坑之旅--布局篇
代码在这里: https://github.com/future-challenger/petshop/tree/master/client/petshop/src/controller 回头看看RN ...
- https填坑之旅
Boss说,我们买了个权威证书,不如做全站式的https吧,让用户打开主页就能看到受信任的绿标.于是我们就开始了填坑之旅. [只上主域好不好?] 不好...console会报出一大堆warning因为 ...
- React Native填坑之旅--Stateless组件
Stateless component也叫无状态组件.有三种方法可以创建无状态组件. 坑 一般一个组件是怎么定义的: 很久以前的方法: const Heading = createClass({ re ...
- React Native填坑之旅--重新认识RN
如同黑夜里的一道光一样,就这么知道了F8. F8是每年一次Facebook每年一次的开发者大会.每次大会都会release相应的APP,iOS.Android都有.之前都是用Native开发的,但是2 ...
随机推荐
- 网络知识之http请求
使用http超文本传输协议来访问web服务器 它定义了客户端和服务器之间交互的信息内容和步骤. 客户端解析url后发送请求消息---->服务器(解析请求消息,完成工作,包装结果为响应消息)--- ...
- Git中.gitignore文件不起作用的解决以及Git中的忽略规则介绍
在Studio里使用Git管理代码的过程中,可以修改.gitignore文件中的标示的方法来忽略开发者想忽略掉的文件或目录,如果没有.gitignore文件,可以自己手工创建.在.gitignore文 ...
- git学习02 - log查看&版本回退
1.查看更新记录 git log / git log --pretty=oneline D:\learn\git_test>git log commit a915e7b12076673d778 ...
- noi.ac309 Mas的童年
题目链接 题面 题目描述 \(Mas\)完成了一天的工作,走在回家的路上,看着路边的景色,他想起来自己的童年. 许许多多的记忆交错,丝丝缕缕的牵扯着\(Mas\). 在回忆的深处,\(Mas\)想起来 ...
- uninitialized_copy()效果试验
根据<STL源码剖析>这段节选描述,实现如下代码进行测试 #include "2jjalloca.h" #include <vector> #include ...
- 静态网站创建工具Docusaurus
地址:https://docusaurus.io/docs/zh-CN/installation 安装 Docusaurus
- 蓝桥杯入门训练-Fibonacci数列
刚刚开始刷题的时候就栽了个大跟头,稍微记一下...... 一开始不是很理解:“我们只要能算出这个余数即可,而不需要先计算出Fn的准确值,再将计算的结果除以10007取余数,直接计算余数往往比先算出原数 ...
- DB2读取CLOB字段-was报错:操作无效:已关闭 Lob。 ERRORCODE=-4470, SQLSTATE=null
DB2读取CLOB字段-was报错:操作无效:已关闭 Lob. ERRORCODE=-4470, SQLSTATE=null 解决方法,在WAS中要用的数据源里面配置连个定制属性: progressi ...
- .net aop 操作 切面应用 Castle.Windsor框架 spring 可根据接口 自动生成一个空的实现接口的类
通过unget 安装Castle.Windsor using Castle.DynamicProxy; using System; using System.Collections.Generic; ...
- mysql并发控制之数据库锁
1.mysql和redis的区别 mysql是一种关系型数据库,数据会最终存储在磁盘上.而redis是一种非关系型的nosql数据库,以key-value的形式存储数据,将数据存储在内存.从性能上来说 ...