寫在前面
爲了復現一個pytorch的代碼,花了一天時間配置容器,就是爲了省事,直接在網上找了一個pytorch-opencv的鏡像,從鏡像創建容器,然後配置容器的可視化界面vncserver,期間出現了各種問題,記錄下來解決方案。
pytorch-opencv的鏡像
在github上找到大神配置好的鏡像,這裏直接貼出來: 命令行pull pytorch鏡像,或者修改dockerfile然後創建pytorch鏡像.
#sudo docker pull rwightman/pytorch-opencv
pull下來鏡像後,可以查看現有的鏡像有哪些
# sudo docker images
可以看到鏡像已經pull到本地了
基於鏡像新建容器並啓動
# sudo docker run -it rwightman/pytorch-opencv:latest /bin/bash
啓動後用查看容器是否創建好
# sudo docker ps -a
注意如果用sudo docker ps命令只能查到當前正在運行的容器,加** - a **可以查看所有容器
根據CONTAINER ID,就可以啓動容器
# sudo docker start CONTAINER ID
# sudo docker attach CONTAINER ID
啓動後,顯示如下
# root@CONTAINER ID:
接下來就是在容器內配置可視化圖形界面
vncserver安裝與配置
- 更新源及系統:apt update -y
# root@CONTAINER ID: apt update -y
由於現在的容器環境非常乾淨,也就是什麼都沒有,直接運行update會一直顯示working, 你以爲是因爲要更新的東西太多,等了好幾個小時依然還是working的話,首先判斷是否是源列表的問題,修改源列表,我直接下載的中科大的源,替換了本地/ect/apt/sources.list 文件內容(建議先備份),運行update 依然顯示0%[working],繼續排查,可能是docekr環境太純淨,缺乏必要的包apt-transport-https,由於目前沒有安裝命令,只能從主機上下載了.deb文件,然後拷貝到容器裏
#sudo docker cp apt-transport-https_1.2.32_amd64.deb 1482e1bcf386:/workspace
然後安裝apt-transport-https
#dpkg -i apt-transport-https_1.2.32_amd64.deb
安裝成功後再update,這次直接報錯
root@1482e1bcf386:/workspace# apt update -y
Reading package lists... Done
E: Could not get lock /var/lib/apt/lists/lock - open (11: Resource temporarily unavailable)
E: Unable to lock directory /var/lib/apt/lists/
這是因爲剛纔運行了update的,強制退出了但是後臺進程還在,運行ps -e | grep apt查看一下
root@1482e1bcf386:/workspace# ps -e | grep apt
43 pts/0 00:00:00 apt
刪掉/var/lib/apt/lists/lock文件即可
root@1482e1bcf386:/workspace# rm /var/lib/apt/lists/lock
接下來運行update就沒有再出問題了。
- 安裝桌面環境
# apt install ubuntu-desktop gnome-panel gnome-settings-daemon metacity nautilus gnome-terminal -y
- 安裝 vncserver
# apt install vnc4server -y
- 配置 vncserver
# vim ~/.vnc/xstartup
在文件最下面加上
gnome-panel &
gnome-settings-daemon &
metacity &
nautilus &
按一下鍵盤上的i就進入了插入模式,粘貼完畢後,按 Esc 退出插入模式,然後輸入’:wq!’+Enter鍵即可保存退出,整體文件內容如下圖所示5. 啓動vncserver,並設置圖形界面的大小
vncserver -geometry 1600x1080
然後就可以在主機上的vncserver裏打開容器了!