docker服務(wù)本身在前面的文章中已經(jīng)有過一次介紹,這里就不再贅述,有空的話可以看看前面docker相關(guān)的文章。

這一次我們是在linux環(huán)境內(nèi)運(yùn)行docker,將會(huì)更加的簡便。

PVE其實(shí)也是一個(gè)基于debian的linux系統(tǒng),如果你想要將docker服務(wù)直接安裝在PVE系統(tǒng)這個(gè)層級(jí)上當(dāng)然也是可以做到,但是個(gè)人不太建議這么做,一是不太方便管理,二是部分docker的服務(wù)我們還是要放到公網(wǎng)上去的,用一個(gè)LXC容器隔離一下會(huì)稍微好一點(diǎn),性能上按我的理解應(yīng)該是基本沒有損失。

一、建立lxc容器

類似于之前的一篇我們建立Nginx服務(wù)的lxc容器,前期操作是一模一樣的,這里也就不再贅述了,具體可以見之前以下這篇文章中的2創(chuàng)建用于反向代理的容器,主要說一下區(qū)別的點(diǎn),我們這個(gè)容器一定要取消無特權(quán)容器的勾選,否則后面你想要掛載nas的存儲(chǔ)系統(tǒng)是不能完成的。至于說項(xiàng)目資源的話內(nèi)存和CPU其實(shí)可以給滿,我是給了和物理機(jī)一樣的核心數(shù)以及一半的內(nèi)存,因?yàn)槲覀冎饕馁Y源的服務(wù)都在這個(gè)容器里面。然后網(wǎng)口的ipv4我們還是選擇dhcp,ipv6不要選擇,統(tǒng)一由我們之前部署的Nginx容器來完成。設(shè)置完成看到MAC地址后去我們的路由器綁定一下這臺(tái)容器的局域網(wǎng)固定IP。

創(chuàng)建完成進(jìn)行了換源和啟動(dòng)ssh之后我們關(guān)機(jī),我們還需要修改一下設(shè)置。先來到PVE的管理界面,點(diǎn)擊這臺(tái)容器,然后點(diǎn)擊中間的選項(xiàng)。雙擊功能處,把嵌套和nfs一定勾選上,SMB/CIFS可選,我是順便把他一起選上了。是否自啟動(dòng)和啟動(dòng)順序這里你可以按照你自己需求來改,我是因?yàn)镹AS啟動(dòng)太慢了所以設(shè)置了一個(gè)600s的延遲啟動(dòng)。

All in one(八)安裝運(yùn)行docker服務(wù)的lxc容器

然后我們用WinSCP連接PVE,打開目錄/etc/pve/lxc中的你的lxc容器編號(hào).conf,然后在最下面加上以下幾行。

lxc.apparmor.profile: unconfined

lxc.cgroup2.devices.allow: c 226:0 rwm

lxc.cgroup2.devices.allow: c 226:128 rwm

lxc.mount.entry: /dev/dri dev/dri none bind,optional,create=dir

分別的含義是

關(guān)閉apparmor,不然根本用不了docker

允許容器訪問226:0設(shè)備,就是核顯

允許容器訪問訪問226:128設(shè)備,還是核顯,應(yīng)該是是渲染器

將主機(jī)里面的/dev/dri目錄掛載到容器內(nèi),如果主機(jī)不存在就不掛載,如果容器沒這個(gè)目錄就新建,注意后面這個(gè)dev前面沒有斜杠

其實(shí)主要就是寫第一行讓我們能用docker以及后面的三行是用來讓lxc容器可以使用核顯進(jìn)行編解碼,沒有核顯或者不用核顯就只用第一條就行。

設(shè)置完成之后我們重新打開lxc容器,進(jìn)入ssh(關(guān)機(jī)后可能又要你再去輸入一遍systemctl start ssh命令)或者控制臺(tái)輸入

ls /dev/dri

返回的內(nèi)容里面如果有了這三個(gè)東西我們lxc容器就可以使用核顯了,或者你不喜歡命令行用WinSCP去這個(gè)目錄看有沒有這三個(gè)東西也行。

by-path card0 renderD128

二、安裝docker

仍然要注意的是當(dāng)前dockerhub好像還是無法正常的訪問,我也沒辦法提供一些比較好的辦法,不過我們可以先把docker相關(guān)的組件先安裝了。

依然還是參考清華鏡像站安裝docker-ce的辦法,如果使用官網(wǎng)的網(wǎng)址庫更新可能會(huì)卡住。

由于docker的版本還是比較重要的,所以說我們還是安裝最新的版本,那么就不建議用apt的默認(rèn)庫。

首先我們先安裝依賴

apt install ca-certificates curl gnupg

然后新容器沒有舊版本,所以直接添加docker的GPG公鑰即可

install -m 0755 -d /etc/apt/keyrings

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | gpg --dearmor -o /etc/apt/keyrings/docker.gpg

sudo chmod a+r /etc/apt/keyrings/docker.gpg

echo

"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/ubuntu

"$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" |

tee /etc/apt/sources.list.d/docker.list > /dev/null

最后再更新apt庫并安裝相關(guān)組件

apt update

apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

安裝完成之后可以查看下版本號(hào)確定是否安裝成功

docker -v

當(dāng)前的版本號(hào)應(yīng)該是27.0.3

然后還是到目錄/etc/docker下新建一個(gè)daemon.json,用來填一些鏡像站,雖然說現(xiàn)在沒啥能跑通的

{

"registry-mirrors": [

"鏡像1",

"鏡像2"

]

}

github上有個(gè)教程指導(dǎo)怎么自己搭建鏡像的,網(wǎng)址如下,當(dāng)然他里面有個(gè)鏈接列了第三方鏡像站列表,但是對(duì)安全性不做保障。

https://github.com/cmliu/CF-Workers-docker.io

三、掛載NAS存儲(chǔ)

由于我們的整個(gè)All in one的存儲(chǔ)都是放在NAS虛擬機(jī)上的,所以說我們需要用到的一些存儲(chǔ)目錄要掛載到這臺(tái)lxc容器上,這里我們就使用nfs掛載即可。

首先我們要確定我們的NAS上相關(guān)的數(shù)據(jù)集或者說共享文件夾已經(jīng)開啟了nfs共享并且允許我們lxc容器的IP訪問,例如說我們在truenas上設(shè)置為允許訪問的網(wǎng)絡(luò)是整個(gè)192.168.1.0/24的局域網(wǎng)網(wǎng)段,然后要記得高級(jí)設(shè)置里面的用戶的映射關(guān)系,具體可以再倒回去翻NAS安裝那一篇。

All in one(八)安裝運(yùn)行docker服務(wù)的lxc容器圖片

如果說你用的是其他的NAS系統(tǒng),設(shè)置上是大同小異的,只要記得為了安全一定要限制可以訪問的IP以及為了方便操作映射用戶權(quán)限或者直接選擇可讀寫即可,有的系統(tǒng)可能還有選擇是否異步的選項(xiàng),異步開啟的優(yōu)勢是響應(yīng)速度快,劣勢就是數(shù)據(jù)可能會(huì)出現(xiàn)一致性問題,看你自己選擇。

然后我們需要在lxc容器上安裝nfs相關(guān)的包

apt install nfs-common

安裝完成之后我們用WinSCP打開lxc容器里面/etc目錄下的fstab文件,按照如下格式輸入掛載的目錄,第二行是一個(gè)例子,將IP為192.168.1.11的NAS共享的/mnt/DATA0/share數(shù)據(jù)集掛載到本地/mut/nfsshare目錄。一般來說大家都把遠(yuǎn)程共享文件夾掛載在本地mnt目錄里面,當(dāng)然也隨你喜歡,記得輸入本地掛載的路徑后要去建立相應(yīng)的目錄,即像例子需要在lxc容器里新建一個(gè)/mnt/nasshare的目錄,不然會(huì)報(bào)錯(cuò)。

你的NASIP:NAS上共享文件夾的路徑 本地掛載的路徑 nfs defaults 0 0

192.168.1.11:/mnt/DATA0/share /mnt/nasshare nfs defaults 0 0

將你需要掛載的數(shù)據(jù)集或者說文件夾都填進(jìn)去之后,我們回到ssh或者控制臺(tái),輸入命令

mount -a

然后就可以用WinSCP去掛載的路徑看看掛載是否成功,里面如果傳了文件的話是不是NAS和lxc容器里面都能看到。如果說NAS是truenas等沒有方便的查看文件工具的話,可以用SMB共享到你操作的windows電腦上來看。

至此我們已經(jīng)初步完成了運(yùn)行docker服務(wù)的lxc容器的搭建,現(xiàn)在已經(jīng)可以把我們之前提到過的immich和jellyfin移植到lxc容器上了,下一篇我們再繼續(xù)說點(diǎn)其他的docker容器。

immich補(bǔ)遺

由于immich的app要和服務(wù)器版本匹配,所以網(wǎng)盤里面做了更新,另外作者在1.109版本更新了一個(gè)買license支持他的選項(xiàng),但是請務(wù)必更新到1.109.2不然就變成必須購買了

 

作者聲明本文無利益相關(guān),歡迎值友理性交流,和諧討論~

,

聲明:本站所有文章,如無特殊說明或標(biāo)注,均為本站原創(chuàng)發(fā)布。任何個(gè)人或組織,在未征得本站同意時(shí),禁止復(fù)制、盜用、采集、發(fā)布本站內(nèi)容到任何網(wǎng)站、書籍等各類媒體平臺(tái)。如若本站內(nèi)容侵犯了原著者的合法權(quán)益,可聯(lián)系我們進(jìn)行處理。