說明
本文是在服務(wù)器已經(jīng)配置好 Docker
相關(guān)環(huán)境的情況下,簡要介紹了在服務(wù)器上如何構(gòu)建 Docker
鏡像來搭建個人開發(fā)環(huán)境,因此本文不涉及 Docker
的安裝、維護以及各種細節(jié),若要詳細了解,請查看文章最后的 相關(guān)資料 一節(jié)。
教程
以下所有操作均在同一文件夾(例如 /media/username/Docker
文件夾)內(nèi)進行。,請在自己的目錄下新建一個 Docker
文件夾
1. 編寫 Dockerfile
新建 Dockerfile
文件:
-
FROM
后跟需要使用的基礎(chǔ)鏡像,你的鏡像會在此基礎(chǔ)上構(gòu)建,可以省去很多配環(huán)境的步驟,例如使用NVIDIA官方提供的cuda鏡像,可以省去手動配cuda環(huán)境的步驟:nvidia/cuda:12.2.0-devel-ubuntu22.04
。更多版本見nvidia/cuda。 -
RUN /bin/bash -c
后面的雙引號中,添加你在配環(huán)境過程中需要執(zhí)行的命令,不用寫出所有的命令,進入容器后還可以繼續(xù)配環(huán)境。
FROM registry.cn-hangzhou.aliyuncs.com/2h1c_aliyun/accelerate:nvidia_cuda_12.2.0-devel-ubuntu22.04
# 每一個RUN命令都會在鏡像中構(gòu)建一個“層”
# 從DEBIAN_FRONTEND開始往下的都是安裝命令,僅為示例,非必須
RUN /bin/bash -c "sed -i 's/archive.ubuntu.com/mirrors.ustc.edu.cn/g' /etc/apt/sources.list \
&& sed -i 's/security.ubuntu.com/mirrors.ustc.edu.cn/g' /etc/apt/sources.list \
&& apt update && apt upgrade -y"
RUN /bin/bash -c "DEBIAN_FRONTEND=noninteractive apt install tzdata git openssh-server vim zsh \
make sudo net-tools inetutils-ping \
language-pack-zh* -y"
在 Dockerfile
所在文件夾下,執(zhí)行構(gòu)建命令:
docker build -t=zhaoliangcheng_image:latest .
- 將
zhaoliangcheng_image
替換成你為新鏡像起的名字 -
latest
是版本/標簽名稱,同樣可以改為自定義的名稱
2. 編寫 docker-compose.yml
新建 docker-compose.yml
文件:
- 所有寫著自定義名稱的,都可以用相同的名稱,注意不能與他人的重復(fù),最好命名為username_xxx,即用戶名_英文字符串
version: '3.8'
name: 自定義名稱
services:
自定義名稱:
init: true
container_name: 自定義名稱
network_mode: "host"
privileged: true
image: Dockerbuild構(gòu)建出的鏡像
command: tail -f /dev/null
volumes:
- "/tmp/.X11-unix:/tmp/.X11-unix:rw"
- "/dev:/dev:rw"
- "./ENVIRONMENTS:/root/ENVIRONMENTS:rw"
- "./SHARE:/root/SHARE:rw"
working_dir: /root
environment:
- DISPLAY=$DISPLAY
- LC_ALL=C.UTF-8
- NVIDIA_DRIVER_CAPABILITIES=all
deploy:
resources:
reservations:
devices:
- driver: nvidia
count: all
capabilities: [compute,graphics,video,utility,display]
例如:
version: '3.8'
name: zhaoliangcheng_container
services:
zhaoliangcheng_container:
init: true
container_name: zhaoliangcheng_container
network_mode: "host"
privileged: true
image: zhaoliangcheng_image:latest
command: tail -f /dev/null
volumes:
- "/tmp/.X11-unix:/tmp/.X11-unix:rw"
- "/dev:/dev:rw"
- "./ENVIRONMENTS:/root/ENVIRONMENTS:rw"
- "./SHARE:/root/SHARE:rw"
working_dir: /root
environment:
- DISPLAY=$DISPLAY
- LC_ALL=C.UTF-8
- NVIDIA_DRIVER_CAPABILITIES=all
deploy:
resources:
reservations:
devices:
- driver: nvidia
count: all
capabilities: [compute,graphics,video,utility,display]
3. 使用容器
所有要保存的數(shù)據(jù)例如代碼、模型等,放在 /root/SHARE
或 /root/ENVIRONMENTS
中
創(chuàng)建容器
創(chuàng)建容器就好比創(chuàng)建一個虛擬機,只需運行一次創(chuàng)建命令即可。
docker compose up -d
如果修改了 docker-compose.yml
,那么想要讓修改生效,就需要重新執(zhí)行這條命令,但這會讓原容器被刪除,因此需要保存好數(shù)據(jù)
啟動容器
當(dāng)容器創(chuàng)建成功后,以后每次啟動容器,都只需執(zhí)行這條命令:
docker start 容器名稱
其中,容器名稱是你在 docker-compose.yml
的 container_name
一項中所填寫的自定義名稱
進入容器
命令行
docker exec -it 容器名稱 bash
VSCode
在擴展中安裝Remote插件,安裝好后在左側(cè)的遠程資源管理器中先連接到服務(wù)器,然后在新打開的VSCode窗口中,選擇 開發(fā)容器 ,右鍵選擇 附加到容器 即可連接
4. 關(guān)閉容器
docker stop 容器名稱
5. 備份容器
通過備份容器,可以:
- 在容器環(huán)境損壞時快速恢復(fù)環(huán)境
- 在服務(wù)器與個人電腦間遷移環(huán)境
備份容器分為導(dǎo)出和導(dǎo)入兩個步驟:
-
導(dǎo)出是將容器導(dǎo)出為
*.tar
文件 -
導(dǎo)入是將
*.tar
文件中的內(nèi)容導(dǎo)入成鏡像,通過鏡像就可以創(chuàng)建容器了
導(dǎo)出
- 關(guān)閉容器
docker stop 容器名稱
- 執(zhí)行導(dǎo)出命令
docker export -o=文件名稱.tar 容器名稱
導(dǎo)入
- 執(zhí)行導(dǎo)入命令
docker import 文件名稱.tar 鏡像名稱:版本號
- 查看系統(tǒng)中所有的鏡像
docker images -a
6. 重置容器
如果環(huán)境損壞,可以重置容器,恢復(fù)環(huán)境到某個版本。文章來源:http://www.zghlxwxcb.cn/news/detail-604581.html
重置容器有刪除和重新創(chuàng)建兩個步驟:文章來源地址http://www.zghlxwxcb.cn/news/detail-604581.html
- 刪除容器(注意將需要保存的數(shù)據(jù)移動到
/root/SHARE
或/root/ENVIRONMENTS
中)
docker compose down
- 重新創(chuàng)建容器
修改docker-compose.yml
的image
中的鏡像名稱:版本號
,Docker 就會使用image
中的鏡像新建一個容器,并且/root/SHARE
和/root/ENVIRONMENTS
中的數(shù)據(jù)不會丟失
docker compose up -d
相關(guān)資料
文章合集
-
Docker專欄:
Docker
相關(guān)文章合集
詳細了解本文
- 若要詳細了解本文中的內(nèi)容,參考Docker實踐:使用Docker搭建個人開發(fā)環(huán)境
在個人電腦上安裝 Docker
- 若要在個人電腦上安裝
Docker
,參考Docker官方文檔學(xué)習(xí)筆記(一):安裝Docker Engine(和安裝Docker Desktop for Linux二選一)。 - 在最新的WSL2中同樣可以安裝 Docker Engine,參考在Windows 11 中安裝和使用 WSL 2
容器使用 NVIDIA 顯卡
- 如果個人電腦有NVIDIA獨顯,參考Ubuntu下 NVIDIA Container Runtime 安裝與使用,使容器也能使用顯卡
托管鏡像
- 如果想像使用
GitHub
托管代碼一樣,托管鏡像,參考使用阿里云管理Docker鏡像
運行GUI程序
- 如果想在容器中運行GUI程序,參考Docker容器運行GUI程序的方法(直接進入Docker容器運行或通過SSH連接Docker容器運行)
到了這里,關(guān)于Docker實踐:使用Docker搭建個人開發(fā)環(huán)境(極簡版)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!