裸泳的猪

沾沾自喜其实最可悲

0%

Centos下docker模式下安装gitlab私有库

主机信息:阿里云ECS

CPU&内存:1核2 GiB

磁盘:100G

操作系统:CentOS 8.4 64位

1.gitlab镜像拉取

1
2
# gitlab-ce为稳定版本,后面不填写版本则默认pull最新latest版本
$ docker pull gitlab/gitlab-ce

2.运行gitlab镜像

1
2
3
4
5
$ docker run -d  -p 443:443 -p 80:80 -p 222:22 --name gitlab --restart always -v /root/gitlab/config:/etc/gitlab -v /root/gitlab/logs:/var/log/gitlab -v /root/gitlab/data:/var/opt/gitlab gitlab/gitlab-ce
# -d:后台运行
# -p:将容器内部端口向外映射
# --name:命名容器名称
# -v:将容器内数据文件夹或者日志、配置等文件夹挂载到宿主机指定目录

以上操作完似乎就可以使用了,/root/gitlab/config 中有root用户的初始密码。

3.然而

运行后主机死翘翘了,内存太低,直接100%,ssh都登不上了。

不慌,阿里巴巴控制台强制重启,然后进去把docker中的gitlab停了。

4.低配置主机添加swap空间

使用磁盘当内存,速度慢但还勉强能用。

一.添加SWAP空间

使用dd命令创建名为swapfile 的swap交换文件(文件名和目录任意):

1
1.  dd  if=/dev/zero  of=/var/swapfile  bs=1024  count=2097152  

1
2
3
4
5
   dd  if=/dev/zero  of=/var/swapfile  bs=1024  count=2048k
[root@aliyun ~]# dd if=/dev/zero of=/var/swapfile bs=1024 count=2048k
记录了2097152+0 的读入
记录了2097152+0 的写出
2147483648字节(2.1 GB)已复制,31.7458 秒,67.6 MB/秒

科普:if(即输入文件,input file),of(即输出文件,output file)。dev/zero是Linux的一种特殊字符设备(输入设备),可以用来创建一个指定长度用于初始化的空文件,如临时交换文件,该设备无穷尽地提供0,可以提供任何你需要的数目。 bs=1024 :单位数据块(block)同时读入/输出的块字节大小为1024 个字节即1KB,bs(即block size)。count=2048000 :数据块(block)数量为2048000 ,即2048000个1KB。可以计算swap分区的容量为:1KB 2097152=1KB *1024(k)*10242=2097152=2G。(dd命令里的单位M表示1024*1024,k表示1024)。

1
回车后,会执行2g的读写操作,系统会卡一段时间,耐心等待执行结果。

执行完毕,对交换文件格式化并转换为swap分区:

1
2
3
4
1.  mkswap  /var/swapfile  
[root@aliyun ~]# mkswap /var/swapfile
正在设置交换空间版本 1,大小 = 2097148 KiB
无标签,UUID=f88182d5-1155-4cf4-8cb9-5db460d9ac4e

挂载并激活分区:

1
2
3
1.  swapon   /var/swapfile  
[root@aliyun ~]# swapon /var/swapfile
swapon: /var/swapfile:不安全的权限 0644,建议使用 0600

执行以上命令可能会出现:“不安全的权限 0644,建议使用 0600”类似提示,不要紧张,实际上已经激活了,可以忽略提示,也可以听从系统的建议修改下权限:

1
1.  chmod -R 0600 /var/swapfile  

这时候可以用 free –h 或 swapon –s命令查看新swap分区是否正常添加并激活使用。

修改 fstab 配置,设置开机自动挂载该分区:

1
1.  vim    /etc/fstab  

在fstab文件末尾追加如下内容后:wq!保存即可:
/var/swapfile swap swap defaults 0 0
或直接对fstab进行echo追加:

1
1.  echo  "/var/swapfile   swap  swap  defaults  0  0" >>  /etc/fstab  

二. 删除某swap分区

先停止正在使用swap分区:

1
1.  swapoff  /var/swapfile  

删除swap分区文件

1
1.  rm -rf   /var/swapfile  

删除或注释掉我们之前在fstab文件里追加的开机自动挂载配置内容:
/var/swapfile swap swap defaults 0 0

————————————————–

三. 更改Swap配置(进阶级)

swappiness值(0-100),系统对swap分区的依赖程度,越高则越倾向于使用swap分区。
当然,高度依赖swap会造成物理内存远未使用完,就使用swap分区,我们知道swap分区性能远不如物理内存,这反而降低了系统性能,违背了我们创建swap分区的初衷。
我们希望在物理内存即将满荷时再使用swap,这就决定了swappiness值一般为10-60为宜,固态硬盘可以偏高些。
查看当前的swappiness数值:

1
1.  cat   /proc/sys/vm/swappiness   

修改swappiness值,这里以50为例。

1
1.  sysctl vm.swappiness=50   

若希望vm.swappiness=50永久生效,则需要修改sysctl配置文件,直接echo追加配置内容,重启系统后即可生效:

1
1.  echo "vm.swappiness = 50"  >>  /etc/sysctl.conf

————————————————–

四. 增加(扩大)swap分区大小

  1. 首先我们来查看swap空间的大小
1
2
3
4
5
# free -m
total used free shared buffers cached
Mem: 2026 1931 95 0 15 1789
-/+ buffers/cache: 127 1899
Swap: 3074 2 3071
  1. 用dd命令创建一个2G大小的文件(102410242=2097152)

dd if=/dev/zero of=/var/swapfile1 bs=1024 count=2097152

1
2
3
4
[root@aliyun ~]# dd if=/dev/zero of=/var/swapfile1 bs=1024 count=2097152
记录了2097152+0 的读入
记录了2097152+0 的写出
2147483648字节(2.1 GB)已复制,48.2387 秒,44.5 MB/秒
  1. 将该文件创建为linux swap

mkswap /var/swapfile1

1
2
3
[root@aliyun ~]# mkswap /var/swapfile1
正在设置交换空间版本 1,大小 = 2097148 KiB
无标签,UUID=43c47001-58a3-43ec-8510-bc8b2ad2ff51
  1. 激活该文件

swapon /var/swapfile1

1
2
[root@aliyun ~]# swapon /var/swapfile1
swapon: /var/swapfile1:不安全的权限 0644,建议使用 0600
  1. 至此添加swap空间成功,但此时只要系统一重启就会丢失这个swap空间,所以我们要设置一下/etc/fstab文件,
    在文件的末尾加上/var/swapfile1 swap swap defaults 0 0

  2. 查看大小 free -h

1
2
3
4
[root@aliyun ~]# free -h
total used free shared buff/cache available
Mem: 1.8G 1.1G 73M 22M 606M 496M
Swap: 4.0G 1.0G 3.0G
-------------本文结束感谢您的阅读-------------