Docker中conda環(huán)境的導(dǎo)出和導(dǎo)入
1、常用命令:
docker pull -- 從遠(yuǎn)程倉(cāng)庫(kù)將鏡像下載至本地 docker run -- 運(yùn)行一個(gè)容器 docker images -- ??幢镜冂R像 docker ps -- 查看容器,默認(rèn)只查看已啟動(dòng)的,加入 "-a" 參數(shù)可以查看所有 docker rm -f ID # 刪除之前的運(yùn)行容器 重命名容器 docker rename old_name new_name 拷貝文件到容器中 docker cp MLP 95909784d85b:/workspace/ 進(jìn)入容器中 docker exec -u 0 -it testtorch /bin/bash docker save保存的是鏡像(image),docker export保存的是容器(container) docker load不能對(duì)載入的鏡像重命名,而docker import可以為鏡像指定新名稱(chēng)。
2、環(huán)境導(dǎo)出:
Step-1: 安裝docker(可以忽略) Step-2: 拉取anaconda鏡像(docker images檢查看看,已經(jīng)有了的話(huà)就跳過(guò)這一步) docker pull continuumio/anaconda3 Step-3: 基于拉取的鏡像創(chuàng)建容器 docker run -i -t continuumio/anaconda3 /bin/bash Step-4-1: cd opt/conda/envs ls(沒(méi)有東西) step-4-2(可選步驟): 退出容器: exit 查看容器名稱(chēng):docker ps -a 可以改容器名稱(chēng):docker rename great_chaum ljhpytorch 再次查看容器名稱(chēng):docker ps -a Step-5: 查看本地anaconda中env的路徑(例如:/home/ljh/anaconda3/envs/pytorch/) Step-6: 可以另起一個(gè)終端 把本地的環(huán)境文件復(fù)制到容器中 docker cp /home/ljh/anaconda3/envs/pytorch/ ljhpytorch:/opt/conda/envs Step-7 啟動(dòng)容器:docker start ljhpytorch 進(jìn)入容器:docker exec -u 0 -it ljhpytorch /bin/bash 查看是否文件已經(jīng)復(fù)制過(guò)來(lái)cd opt/conda/envs ls Step-8: 驗(yàn)證是否能夠使用環(huán)境:source activate 環(huán)境名稱(chēng) 例如:source activate pytorch Step-9: 運(yùn)用 docker commit 指令將運(yùn)行的容器保存為鏡像。 docker commit container_name image_name(隨便取) 例如:docker commit ljhpytorch ljhpytorchimage docker images可以看到新增了一個(gè)鏡像 Step-10: 鏡像導(dǎo)出: docker save -o image.tar(這個(gè)也可以隨便取名字) image_name 給文件夾或文件全部的權(quán)限:sudo chmod -R 777 ./tao/(選擇修改權(quán)限的文件名稱(chēng))
3、兩個(gè)服務(wù)器之間的文件傳輸命令:
scp -r /home/myfile username@192.000.000.000:/home/myfile 其中scp為命令,-r代表移動(dòng)文件,/home/myfile代表源文件夾所在的絕對(duì)路徑,username@192.000.000.000:/home/myfile代表目標(biāo)服務(wù)器中目標(biāo)用戶(hù)名的目標(biāo)文件夾。 示例: 【默認(rèn)目標(biāo)服務(wù)器端口22】 scp -r /data/liujiahui/2022/master/ ljh@192.XXX.XXX.XXX:/DataDisk/liujiahui/AllCode/ 如果需要指定目標(biāo)服務(wù)器端口: scp -r -P 5022 /data/liujiahui/2022/master/ ljh@192.XXX.XXX.XXX:/DataDisk/liujiahui/AllCode/ 跳出選項(xiàng),記得輸入yes,然后輸入密碼
4、環(huán)境導(dǎo)入:
Step-1: 鏡像導(dǎo)入 docker load < image.tar Step-2: (掛載的同時(shí)已經(jīng)創(chuàng)建了容器,容器名稱(chēng)取決于下面的 --name) 掛載宿主機(jī)目錄至容器/data 目錄:(此處需要修改的是宿主機(jī)目錄) 這樣可以便于文件的傳輸共享 示例: docker run -id --gpus all --name ljhcontain -v /home/ljh/Desktop/mydata/:/data/ ljhpytorchimage Step-3: 進(jìn)入容器 docker exec -u 0 -it ljhcontain /bin/bash Step-4: nvidia-smi 查看是否可以使用gpu 完成!
5、快速進(jìn)入容器
正常進(jìn)入容器需要先su進(jìn)入超級(jí)用戶(hù),然后執(zhí)行以下兩個(gè)命令 docker start ljhcontain(有時(shí)候不需要) docker exec -u 0 -it ljhcontain /bin/bash 由于不是很好記憶,因此可以通過(guò)將上述命令直接寫(xiě)在bash腳本執(zhí)行,步驟如下: Step-1: 創(chuàng)建一個(gè)文件名為xxxx.sh的空文件,可以直接在home/用戶(hù)名/下面創(chuàng)建 Step-2: 在文件中寫(xiě)入下面兩行(記得修改容器名稱(chēng)),然后保存 docker start ljhcontain docker exec -u 0 -it ljhcontain /bin/bash Step-3: bash xxx.sh 可以直接一步進(jìn)入容器(如下圖所示) 注:還有其他通過(guò)修改環(huán)境變量等方法,感覺(jué)有些麻煩,可以自行研究
6、其他問(wèn)題解決記錄:
1)docker無(wú)法使用gpu,顯示沒(méi)有驅(qū)動(dòng)
curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add - distribution=$(. /etc/os-release;echo $ID$VERSION_ID) curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | \ sudo tee /etc/apt/sources.list.d/nvidia-docker.list sudo apt-get update sudo apt-get install -y nvidia-container-toolkit
2)bash: vim: command not found
apt-get update apt-get install -y vim
3)容器進(jìn)入失敗
解決方法: docker start testtorch docker exec -u 0 -it testtorch /bin/bash
4)su進(jìn)入失敗
$ su - root Password: su: Authentication failure Sorry. 解決辦法: $ sudo passwd root Enter new UNIX password: Retype new UNIX password: passwd: password updated successfully
5)pip安裝python包失敗
使用pip安裝python包的時(shí)候,出現(xiàn)以下錯(cuò)誤: bash: /opt/conda/envs/pytorch/bin/pip: /home/ljh/anaconda3/envs/pytorch/bin/python: bad interpreter: No such file or directory 解決方法: 在容器中解決問(wèn)題 step-1:【如下圖所示】 which pip 獲得pip路徑 step-2:【如下圖所示】 which python 獲得python路徑 step-3:【如下圖所示】 vim pip路徑 這里可能會(huì)vim報(bào)錯(cuò),解決方法參考問(wèn)題3 step-4: vim常用操作指令: 按下i表示開(kāi)始編輯 按下Esc表示保存并退出編輯 退出編輯之后按下:wq可以退出vim 這一步需要完成的是修改把文件第一行的路徑修改為step-2獲取的路徑【如下圖所示】 step-5: 測(cè)試是否成功 pip -V
6)docker中使用cv2失敗
import cv2 出現(xiàn)以下報(bào)錯(cuò): ImportError: libGL.so.1: cannot open shared object file: No such file or directory 解決方法: apt-get update apt-get install ffmpeg libsm6 libxext6 -y
7)訓(xùn)練時(shí)出現(xiàn)共享內(nèi)存不夠(Bus error)
方法一:在Dataloader中將num_worker設(shè)置為0。意味著每一輪迭代時(shí),dataloader不再有自主加載數(shù)據(jù)到RAM這一步驟(因?yàn)闆](méi)有worker了),而是在RAM中找batch,找不到時(shí)再加載相應(yīng)的batch。
方法二:在起Docker容器時(shí),設(shè)置 --ipc=host 或 --shm-size 或者
到此這篇關(guān)于Docker中conda環(huán)境的導(dǎo)出和導(dǎo)入的文章就介紹到這了,更多相關(guān)Docker conda導(dǎo)出導(dǎo)入內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
docker使用registry搭建本地鏡像倉(cāng)庫(kù)實(shí)例詳解
這篇文章主要介紹了docker使用registry搭建本地鏡像倉(cāng)庫(kù)實(shí)例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-09-09Rancher無(wú)法添加主機(jī)問(wèn)題的解決方法
這篇文章主要給大家介紹了關(guān)于Rancher無(wú)法添加主機(jī)問(wèn)題的解決方法,文中通過(guò)圖文介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2018-06-06使用Docker部署MySQL 5.7&8.0主從集群的方法步驟
這篇文章主要介紹了使用Docker部署MySQL 5.7&8.0主從集群的方法步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-03-03使用docker compose搭建一個(gè)elk系統(tǒng)的方法
這篇文章主要介紹了使用docker-compose搭建一個(gè)elk系統(tǒng)的方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-08-08Docker如何同時(shí)啟動(dòng)多個(gè)服務(wù)
這篇文章主要為大家詳細(xì)介紹了Docker如何同時(shí)啟動(dòng)多個(gè)服務(wù),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-10-10