政府集約化網(wǎng)站群建設(shè)aso推廣公司
目錄
1 安裝docker和配置鏡像源
?2 下載基礎(chǔ)鏡像
?3 通過鏡像創(chuàng)建容器
4 制作項(xiàng)目所需的容器
5 容器制作好后打包為鏡像
6 鏡像備份為.tar文件
7 從其他服務(wù)器上恢復(fù)鏡像
8 docker的其他常用指令
首先科普一下鏡像、容器和實(shí)例;
鏡像:相當(dāng)于安裝包;
容器:相當(dāng)于系統(tǒng),比如windows、mac、Linux系統(tǒng);(容器也由鏡像得來)容器可以被創(chuàng)建、啟動(dòng)、停止、刪除、暫停等。
實(shí)例:就是在容器上進(jìn)行自己的個(gè)性化;
1 安裝docker和配置鏡像源
(1)官網(wǎng)教程:?Install Docker Desktop on Linux
(2)中文教程:Ubuntu - Docker — 從入門到實(shí)踐?
本人是按照中文教程安裝的docker;
(3)安裝完后,為docker配置鏡像加速器,就是進(jìn)入一個(gè)json文件:
vim /etc/docker/daemon.json
在文件中寫入鏡像URL:
{"registry-mirrors": ["https://hub-mirror.c.163.com","https://mirror.baidubce.com"]
}
之后重新啟動(dòng)服務(wù):
$ sudo systemctl daemon-reload
$ sudo systemctl restart docker
配置鏡像源網(wǎng)址:鏡像加速器 - Docker — 從入門到實(shí)踐
或者使用:docker 設(shè)置國內(nèi)鏡像源_docker國內(nèi)鏡像庫_whatday的博客-CSDN博客
?2 下載基礎(chǔ)鏡像
這是一種比較簡單的制作容器的方式:這里演示制作Linux, cuda對(duì)應(yīng)的鏡像;
(1)要進(jìn)行鏡像拉取,就是將Linux的這個(gè)鏡像從網(wǎng)站上下載下來,盡量比你服務(wù)器的版本低一點(diǎn)
鏡像拉取網(wǎng)址:GitHub - cnstark/pytorch-docker: Pure Pytorch Docker Images.
? ? ? ? 這個(gè)網(wǎng)址展示:
? ? ? ? ?選擇你需要用的版本(選帶devel的 ,會(huì)更大 ,里面東西更全 ,更好用),復(fù)制后面的指令到Linux終端就🉑?;
? ? ? ? ? ? ? ? 選取需要用的版本的方式:
? ? ? ? ? ? ? ? ? ? ? ? (1)查看系統(tǒng)版本:
lsb_release -a
? ? ? ? ? ? ? ? 截圖展示:
? ? ? ? ? ? ? ? ?(2)查看cuda版本:
nvidia-smi
? ? ? ? ? ? ? ? 截圖展示:
? ? ? ? ?那么就可以選取 cuda為11.4或者小于11.4的版本,系統(tǒng)選ubuntu為18.04的就可以。
另一個(gè)官方的鏡像拉取網(wǎng)址:Docker
? ? ? ? 該網(wǎng)址界面展示:
? ? ? ? ?要使用GPU的話,需要安裝帶cudnn的,根據(jù)本身服務(wù)器的系統(tǒng),選擇低于服務(wù)器版本的,也選擇帶devel的;同樣復(fù)制后面的指令到服務(wù)器終端就可以;
(2)拉取指令花費(fèi)時(shí)間較長,拉取完后可以通過:
docker images
通過這個(gè)指令查看是否成功將鏡像拉取下來;
截圖展示:
?3 通過鏡像創(chuàng)建容器
(1)通過下面這個(gè)指令創(chuàng)建容器:
docker run -it --name 容器名字 --gpus all 剛剛下載的那個(gè)鏡像
????????-it, --name, --gpus都是參數(shù),關(guān)于參數(shù)的解釋可以查看:Docker run 命令 | 菜鳥教程
????????-it 一般都寫;
????????--name 后面是你想要給容器起的名字;
????????--gpus all 你想要容器使用服務(wù)器上的gpu 這個(gè)就一定要寫;
指令案例:
docker run -d -it --name test --gpus all 11.3.1-cudnn8-devel-ubuntu18.04
?(2)創(chuàng)建完容器就直接進(jìn)入容器里了
? ? ? ? (1)若想從容器推出: 按鍵: ctrl+P+Q -- 就可以退出容器,但是沒有關(guān)閉容器;-- 若想再進(jìn)入容器,輸入指令:
docker attach test(容器名)
? ? ? ? (2)若直接輸入: exit,就關(guān)閉容器了,但是沒有將容器刪除; -- 若想再進(jìn)入容器,需要重啟容器:
docker restart test(容器名)
????????重啟之后再進(jìn)入,還是輸入指令:
docker attach test(容器名)
(3) 查看容器是否創(chuàng)建成功的指令(需要先退出容器):
docker ps
????????上述的指令是只可以看到還在運(yùn)行的容器;
若還想看到關(guān)閉的容器,輸入指令:
docker ps -a
截圖展示:
?(4)測試容器能不能使用gpu,在容器中輸入指令
nvidia-smi
如果類似下圖的顯示:
?證明是可以正常使用gpu的,但是如果識(shí)別不了這個(gè)指令,需要進(jìn)行如下操作(我當(dāng)時(shí)就識(shí)別不了)
? ? ? ? (1)需要為服務(wù)器安裝nvidia驅(qū)動(dòng);當(dāng)時(shí)的參考鏈接是:安裝NVIDIA 驅(qū)動(dòng)及nvidia-docker環(huán)境_docker 安裝 nvidia 驅(qū)動(dòng)_陶表犁的博客-CSDN博客
? ? ? ? (2)安裝完重啟服務(wù)器,重啟docker;
? ? ? ? 指令輸入:
nvidia-docker
? ? ? ? 若顯示:
? ? ? ? ? ? ? ? ?表示安裝成功
? ? ? ? 重啟docker的指令為:
sudo systemctl restart docker
? ? ? ? (3)再進(jìn)入容器輸入nvidia-smi就可以成功顯示了;
4 制作項(xiàng)目所需的容器
(1)上面展示的過程只是下載了一個(gè)基礎(chǔ)的鏡像,使用鏡像創(chuàng)建了容器,但這個(gè)容器中什么都沒有,需要為這個(gè)容器安裝項(xiàng)目所需要的依賴包;
(2)首先要從你的項(xiàng)目中導(dǎo)出依賴包:
????????兩種方式:
????????????????導(dǎo)出當(dāng)前環(huán)境的依賴包:
pip freeze > requirements.txt
? ? ? ? ? ? ? ? 導(dǎo)出項(xiàng)目的依賴包:
pipreqs ./
? ? ? ? 具體不清楚的請(qǐng)看:Python導(dǎo)出當(dāng)前環(huán)境依賴包及項(xiàng)目依賴包_YePeanut的博客-CSDN博客?
(3)將requirements.txt文件移動(dòng)到鏡像下,移動(dòng)方式:
docker cp 項(xiàng)目中requirements.txt的路徑 容器名:容器內(nèi)存放requirements,txt的文件路徑
指令案例:
docker cp /mnt/qqq/requirements.txt test:/FID/
(4) 依賴包文件移動(dòng)到容器中后,需要安裝這些依賴包,安裝指令:
pip install -r /FID/requirements.txt
但是我安裝的時(shí)候出現(xiàn)了很多問題,首先是pip指令沒有,解決方案:
? ? ? ? 首先輸入指令:
apt-get update
? ? ? ? 然后輸入:
apt-get upgrade
? ? ? ? 再安裝:
apt-get install python3-pip
? ? ? ? 這樣就能安裝上pip3,之后再用pip裝其他的包就可以啦。
(5)容器中包含文件的截圖(就是一個(gè)小的linux系統(tǒng))
5 容器制作好后打包為鏡像
(1)個(gè)人個(gè)性化的容器制作好,就可以打包為鏡像,在其他服務(wù)器上安裝使用了
(2)打包為鏡像的指令:
docker commit [-m="提交的描述信息"] [-a="創(chuàng)建者"] 容器名稱|容器ID 生成的鏡像名[:標(biāo)簽名]
指令案例:
docker commit test fid
上面的參數(shù)部分可以不寫;
(3)查看鏡像是否制作好,輸入指令:
docker images
????????截圖展示:
? ? ? ? ?這便制作好了一個(gè)名字為“fid”的鏡像;
6 鏡像備份為.tar文件
(1)使用.tar文件在其他服務(wù)器上獲取你制作的這個(gè)鏡像;
(2)備份指令:
docker save -o 保存的PathName 鏡像名:標(biāo)簽
指令案例:
docker save -o /mnt/qqq/FID.tar fid
(3)將備份文件下載到本地,以備后續(xù)使用;
7 從其他服務(wù)器上恢復(fù)鏡像
docker load -i 鏡像備份文件
后續(xù)的步驟和上面就一樣啦;
變?yōu)槿萜鳌⑷萜髦袀魅胍玫拇a;
8 docker的其他常用指令
刪除容器:
docker rm 容器名
刪除鏡像:
docker rmi 鏡像ID
?查看容器占有磁盤大小:
docker system df
查看每個(gè)鏡像、容器的大小:
docker system df -v
查看docker信息:
docker info
上述內(nèi)容為個(gè)人理解,個(gè)人總結(jié),(搞了兩整天才理解成這樣),大家參考參考,輕點(diǎn)噴,有問題咱們評(píng)論區(qū)一起探討!!