dockerhub連不上怎么辦?如何從一臺電腦搬到另一臺。
問題
近期在本地虛擬機和阿里云服務器上都折騰了幾個docker。然后想著在本地的樹莓派上也裝上node-red,計劃丟在實驗室里面連PLC。結(jié)果半吊子的我,先走全局安裝,再走docker,都以失敗告終。前者裝了nvm、node之后,運行nvm指令失敗。后者通過各種方法都是timeout。再在網(wǎng)上看了一些自建的dockerhub,大致反應過來,似乎這東西不像apt一樣,而是可以自己搭個docker倉庫的。于是想著把已經(jīng)裝好的docker能不能先打包傳輸?shù)絧i上面安裝,以后有空再研究自己搭個docker倉庫方便拉取。找了下,發(fā)現(xiàn)了文首的那篇博客。
打包
將容器保存為鏡像
docker commit <容器ID或名稱> <鏡像名稱>:<標簽>
具體我做的是
ssh到我的虛擬機并查看容器
$ sudo docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
5a7772b55fa0 nodered/node-red "./entrypoint.sh" 7 weeks ago Up 36 minutes (healthy) 0.0.0.0:1880->1880/tcp, :::1880->1880/tcp mynodered
把現(xiàn)有的容器保存成鏡像
$ sudo docker commit nodered_siit:latest
把鏡像打包成tar壓縮包并輸出
$ docker save -o node_red_img.tar nodered_siit:latest
查看文件

我們可以看到這個文件就有了。接下來需要做的就是把這個虛擬機里的文件傳到我的pi上面。
還有一種方法是將鏡像打包成tar文件
使用docker save -o <打包的tar文件> <鏡像ID>
查看鏡像
$ sudo docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
codercom/code-server latest 1cae4088db70 4 weeks ago 739MB
grafana/grafana latest de903bc9ce7c 8 weeks ago 478MB
mysql latest c757d623b190 3 months ago 586MB
打包鏡像
$ sudo docker save -o grafana_img.tar de903bc9ce7c
查看輸出文件
$ ls
Desktop Downloads Pictures Templates VirtualControlAPI.py `grafana_img.tar`
Documents Music Public Videos grafana
然后需要把tar文件傳入需要的安裝這個鏡像的那臺電腦。
Linux之間傳文件
scp指令
$ sudo scp node_red_img.tar siit@192.168.122.43:~/
The authenticity of host '192.168.122.43 (192.168.122.43)' can't be established.
ED25519 key fingerprint is SHA256:MhT5RyOnqnKAUpPEvT/xONvVHjd3rmgi0HcTUNDq9HY.
This key is not known by any other names.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '192.168.122.43' (ED25519) to the list of known hosts.
siit@192.168.122.43's password:
node_red_img.tar 100% 738MB 189.4MB/s 00:03
其實沒成功,傳過去后發(fā)現(xiàn)因為虛擬機用的x86架構(gòu)和pi的arm架構(gòu)的docker不兼容,所以以下內(nèi)容具體實施是從虛擬機轉(zhuǎn)到虛擬機********************
傳完文件過后,使用docker load把之前打包成tar的壓縮包載入新機器的docker images里面
$ sudo docker load -i node_red_img.tar
78561cef0761: Loading layer 8.082MB/8.082MB
3762a94f9dbd: Loading layer 122.1MB/122.1MB
32abe9a81c15: Loading layer 5.61MB/5.61MB
186d35b3efff: Loading layer 3.584kB/3.584kB
4d6aebb789b4: Loading layer 4.608kB/4.608kB
7de19ea56e73: Loading layer 2.56kB/2.56kB
ca873884f967: Loading layer 21.39MB/21.39MB
5f70bf18a086: Loading layer 1.024kB/1.024kB
9cc17eb232c5: Loading layer 6.144kB/6.144kB
177ddae17d50: Loading layer 8.192kB/8.192kB
2b465594d98a: Loading layer 4.608kB/4.608kB
ea698edee62f: Loading layer 4.096kB/4.096kB
ef933f1a0bd8: Loading layer 3.584kB/3.584kB
badb32c1526f: Loading layer 3.584kB/3.584kB
56aa82df8a39: Loading layer 83.09MB/83.09MB
0130bb700840: Loading layer 348.9MB/348.9MB
b82597808ede: Loading layer 6.656kB/6.656kB
5b139ee354cc: Loading layer 184.7MB/184.7MB
Loaded image: nodered_siit:latest
然后,我們通過docker images指令查看
$ sudo docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nodered_siit latest ecc9f6a2e5c5 2 days ago 746MB
可以看到新的鏡像已經(jīng)載入。然后的操作就和以前pull之后做的一樣,需要 docker run了。
$ sudo docker run -d --name mynodered -p 1880:1880 nodered_siit
7a67342ceb34be393533184097ff20de9da2f6c8864199df75168560099f0f7c
docker: Error response from daemon: AppArmor enabled on system but the docker-default profile could not be loaded: running `apparmor_parser apparmor_parser --version` failed with output:
然后遇到報了個錯,缺AppArmor。就裝一下:
$ sudo apt-get install apparmor
裝完之后,sudo docker ps -a發(fā)現(xiàn)新的mynodered已經(jīng)有了。
然后sudo docker start mynodered。
然后瀏覽器打開IP:1880,OK,問題解決。
如果復制的是容器,也就是用的docker commit <容器> <打包鏡像.tar>,最終恢復后的是之前運行的容器,也就是說,容器當時的狀態(tài)也被保存了下來。
如果復制的是鏡像,就只是復制鏡像,恢復后和pull下來的原始鏡像一樣。但我按照ID復制恢復后的image發(fā)現(xiàn)只有ID而沒有repository和tag,此時需要使用docker tag <鏡像ID> newrepository:newtag進行重新打標簽。具體我遇到的問題如下:
$ sudo docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nodered_siit latest ecc9f6a2e5c5 6 days ago 746MB
<none> <none> de903bc9ce7c 8 weeks ago 478MB
<none> <none> c757d623b190 3 months ago 586MB
$ sudo docker tag de903bc9ce7c grafana/grafana:latest
$ sudo docker tag c757d623b190 mysql/latest
再次查看
$ sudo docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nodered_siit latest ecc9f6a2e5c5 6 days ago 746MB
grafana/grafana latest de903bc9ce7c 8 weeks ago 478MB
mysql/latest latest c757d623b190 3 months ago 586MB

浙公網(wǎng)安備 33010602011771號