Docker中conda環(huán)境的導(dǎo)出和導(dǎo)入
1、常用命令:
docker pull -- 從遠(yuǎn)程倉庫將鏡像下載至本地 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不能對載入的鏡像重命名,而docker import可以為鏡像指定新名稱。
2、環(huán)境導(dǎo)出:
Step-1: 安裝docker(可以忽略) Step-2: 拉取anaconda鏡像(docker images檢查看看,已經(jīng)有了的話就跳過這一步) docker pull continuumio/anaconda3 Step-3: 基于拉取的鏡像創(chuàng)建容器 docker run -i -t continuumio/anaconda3 /bin/bash Step-4-1: cd opt/conda/envs ls(沒有東西) step-4-2(可選步驟): 退出容器: exit 查看容器名稱:docker ps -a 可以改容器名稱:docker rename great_chaum ljhpytorch 再次查看容器名稱: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ù)制過來cd opt/conda/envs ls Step-8: 驗(yàn)證是否能夠使用環(huán)境:source activate 環(huán)境名稱 例如: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)限的文件名稱)
3、兩個(gè)服務(wù)器之間的文件傳輸命令:
scp -r /home/myfile username@192.000.000.000:/home/myfile 其中scp為命令,-r代表移動(dòng)文件,/home/myfile代表源文件夾所在的絕對路徑,username@192.000.000.000:/home/myfile代表目標(biāo)服務(wù)器中目標(biāo)用戶名的目標(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)建了容器,容器名稱取決于下面的 --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)入超級用戶,然后執(zhí)行以下兩個(gè)命令 docker start ljhcontain(有時(shí)候不需要) docker exec -u 0 -it ljhcontain /bin/bash 由于不是很好記憶,因此可以通過將上述命令直接寫在bash腳本執(zhí)行,步驟如下: Step-1: 創(chuàng)建一個(gè)文件名為xxxx.sh的空文件,可以直接在home/用戶名/下面創(chuàng)建 Step-2: 在文件中寫入下面兩行(記得修改容器名稱),然后保存 docker start ljhcontain docker exec -u 0 -it ljhcontain /bin/bash Step-3: bash xxx.sh 可以直接一步進(jìn)入容器(如下圖所示) 注:還有其他通過修改環(huán)境變量等方法,感覺有些麻煩,可以自行研究
6、其他問題解決記錄:
1)docker無法使用gpu,顯示沒有驅(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 解決方法: 在容器中解決問題 step-1:【如下圖所示】 which pip 獲得pip路徑 step-2:【如下圖所示】 which python 獲得python路徑 step-3:【如下圖所示】 vim pip路徑 這里可能會vim報(bào)錯(cuò),解決方法參考問題3 step-4: vim常用操作指令: 按下i表示開始編輯 按下Esc表示保存并退出編輯 退出編輯之后按下:wq可以退出vim 這一步需要完成的是修改把文件第一行的路徑修改為step-2獲取的路徑【如下圖所示】 step-5: 測試是否成功 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)闆]有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)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
docker使用registry搭建本地鏡像倉庫實(shí)例詳解
這篇文章主要介紹了docker使用registry搭建本地鏡像倉庫實(shí)例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-09-09使用Docker部署MySQL 5.7&8.0主從集群的方法步驟
這篇文章主要介紹了使用Docker部署MySQL 5.7&8.0主從集群的方法步驟,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-03-03使用docker compose搭建一個(gè)elk系統(tǒng)的方法
這篇文章主要介紹了使用docker-compose搭建一個(gè)elk系統(tǒng)的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-08-08Docker如何同時(shí)啟動(dòng)多個(gè)服務(wù)
這篇文章主要為大家詳細(xì)介紹了Docker如何同時(shí)啟動(dòng)多個(gè)服務(wù),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-10-10