PVE系列-初始化LXC容器并安装Docker

模板下载

​ 下载模板前请务必确保已经替换过LXC源,若还未替换可参考《PVE系列-更换软件&容器源》进行更换LXC源操作。

​ 在PVE后台页面选择 local(pve) -> CT模板 -> 模板 选择对应镜像下载。这里以debian12为例:

image-20240228104504044

​ 点击下载并等待下载完成。

image-20240228105502754

创建LXC容器

​ 点击右上方创建CT 来创建LXC容器

image-20240228105640475

​ 勾选无特权的容器 选项并填写配置信息

image-20240228110312699

​ 模板选择刚下载好的debian12

image-20240228110454078

​ 根据实际需要划分磁盘大小,笔者这边有存储需要,因此新增了一块存储磁盘

image-20240228112447781 image-20240228112539337

​ CPU和内存分配根据实际需求划分即可。这边以运行gitlab为例,2C8G200G。

​ 网络配置

image-20240228112646165

​ 若ipv6获取不到地址,切换为SLAAC尝试下

​ DNS保持默认即可

image-20240228112729055

​ 等待创建完成

image-20240228112805860

启动LXC容器

​ 创建完成后,来到选项控制台模式 调整为 shell ,否则启动后是黑屏状态。image-20240228145000182

调整为shell后再点击启动。
image-20240228143836850

​ 点开控制台,开启远程链接。

image-20240228145421247
1
2
3
4
5
#允许远程登录
sed -i '/PermitRootLogin/ a PermitRootLogin yes' /etc/ssh/sshd_config

#重启ssh服务
systemctl restart sshd

​ ok,使用ssh终端测试能否链接上

image-20240228145833603

初始化配置

时区

1
dpkg-reconfigure tzdata
image-20240228150243234

语言

1
dpkg-reconfigure locales
image-20240228150329403

软件源更换

​ 由于模板并未预装 curl,所以我们需要手动安装下

1
2
apt update
apt install curl

image-20240228150717838

​ 完成之后再执行下属命令

1
bash <(curl -sSL https://linuxmirrors.cn/main.sh)
image-20240228150829822

核显配置

​ 如果你创建的LXC容器不需要使用核显的话,这一部分可以跳过。

​ 【注意】下述操作需要在宿主机操作

​ 使用命令ls -l /dev/dri 查询硬件信息

image-20240228153102606

​ 这里的226,0和226,128是主次设备号

​ 编辑配置文件/etc/pve/lxc/容器id.conf

​ 我这边是 /etc/pve/lxc/100.conf

1
2
3
4
5
6
7
#新增下列内容
lxc.cgroup2.devices.allow: c 226:0 rwm
lxc.cgroup2.devices.allow: c 226:128 rwm
lxc.cgroup2.devices.allow: c 29:0 rwm
lxc.mount.entry: /dev/dri dev/dri none bind,optional,create=dir
lxc.mount.entry: /dev/fb0 dev/fb0 none bind,optional,create=file
lxc.apparmor.profile: unconfined

​ 参数说明:

lxc.apparmor.profile: unconfined用于关闭 LXC 容器的apparmor保护,开启状态无法安装 Docker

Tips

​ 核显这部分内容还尚未测试

安装Docker

​ 设置docker的apt源

1
2
3
4
5
sudo apt-get update
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
1
2
3
4
5
6
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian \
  $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

sudo apt-get update

image-20240228152123636

​ 安装docker软件包

image-20240228152148834
1
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

​ 验证是否安装成功

image-20240228152201205
1
sudo docker run hello-world

​ 开机启动

image-20240228152213417
1
systemctrl enable docker

docker-compose安装

​ 下载compose

image-20240228152430215
1
curl -SL https://github.com/docker/compose/releases/download/v2.24.6/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose

​ 赋予权限

1
chmod +x /usr/local/bin/docker-compose

​ 测试

image-20240228152852593
1
docker-compose 

配置Gitlab

​ 使用docker-compose的方式部署,这里直接放上配置文件

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
version: '3.6'
services:
  gitlab:
    image: gitlab/gitlab-ce:latest
    container_name: gitlab
    restart: always
    hostname: '192.168.10.102' #没有域名填写本机ip
    environment:
      TZ: 'Asia/Shanghai'
      GITLAB_OMNIBUS_CONFIG: |
        external_url 'http://192.168.10.102' #可填本机ip
        gitlab_rails['time_zone'] = 'Asia/Shanghai'
        gitlab_rails['backup_keep_time'] = 1296000 # 15 Day, 1296000 seconds
        gitlab_rails['gitlab_shell_ssh_port'] = 2222  #ssh端口
        #CI/CD
        gitlab_rails['gitlab_default_projects_features_builds'] = false
        #自定义头像
        gitlab_rails['gravatar_plain_url'] = 'http://www.gravatar.com/avatar/%{hash}?s=%{size}&d=identicon'        
    ports:
      - '2080:80'
      - '2443:443'
      - '2222:22'
    volumes:
      - '/data/gitlab/config:/etc/gitlab'
      - '/data/gitlab/logs:/var/log/gitlab'
      - '/data/gitlab/data:/var/opt/gitlab'
    shm_size: '256m'
 

优化gitlab

修改gitlab的配置,找到/etc/gitlab/gitlab.rb文件,添加下属配置:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
#puma相关
puma['worker_timeout'] = 60
puma['worker_processes'] = 2
puma['per_worker_max_memory_mb'] = 768
#postgresql相关
postgresql['max_worker_processes'] = 4
postgresql['shared_buffers'] = "128MB"
#关闭prometheus
prometheus_monitoring['enable'] = false
#sidekiq相关
sidekiq['max_concurrency'] = 10

相关参数设置参考官方给出的配置

https://docs.gitlab.com/omnibus/settings/memory_constrained_envs.html

Licensed under CC BY-NC-SA 4.0
Built with Hugo
Theme Stack designed by Jimmy