[筆記] Docker image傳輸至另一台電腦

  • 1029
  • 0

因公司只有某幾台機器可以對外pull docker image

故學會了如何將image丟至內網的其他電腦

首先將image包成 .tar檔

 $ docker save blazingdb/blazingsql > blazingsql.tar

先scp到內部電腦

再執行docker load指令

$ docker load -i blazingsql.tar

接著在內部電腦即可查到該image

 

而scp對我來說才是一個問題

印象中可以不用輸入密碼就可以將檔案搬到其他主機

但是要設定SSH金鑰才行....

ssh 伺服器端與用戶端的連線步驟示意圖複習一下前陣子才終於認真看的鳥哥

  1. 伺服器建立公鑰檔: 每一次啟動 sshd 服務時,該服務會主動去找 /etc/ssh/ssh_host* 的檔案,若系統剛剛安裝完成時,由於沒有這些公鑰檔案,因此 sshd 會主動去計算出這些需要的公鑰檔案,同時也會計算出伺服器自己需要的私鑰檔;
     
  2. 用戶端主動連線要求: 若用戶端想要連線到 ssh 伺服器,則需要使用適當的用戶端程式來連線,包括 ssh, pietty 等用戶端程式;
     
  3. 伺服器傳送公鑰檔給用戶端: 接收到用戶端的要求後,伺服器便將第一個步驟取得的公鑰檔案傳送給用戶端使用 (此時應是明碼傳送,反正公鑰本來就是給大家使用的!);
     
  4. 用戶端記錄/比對伺服器的公鑰資料及隨機計算自己的公私鑰: 若用戶端第一次連接到此伺服器,則會將伺服器的公鑰資料記錄到用戶端的使用者家目錄內的 ~/.ssh/known_hosts 。若是已經記錄過該伺服器的公鑰資料,則用戶端會去比對此次接收到的與之前的記錄是否有差異。若接受此公鑰資料, 則開始計算用戶端自己的公私鑰資料;
     
  5. 回傳用戶端的公鑰資料到伺服器端: 用戶將自己的公鑰傳送給伺服器。此時伺服器:『具有伺服器的私鑰與用戶端的公鑰』,而用戶端則是: 『具有伺服器的公鑰以及用戶端自己的私鑰』,你會看到,在此次連線的伺服器與用戶端的金鑰系統 (公鑰+私鑰) 並不一樣,所以才稱為非對稱式金鑰系統喔。
     
  6. 開始雙向加解密: (1)伺服器到用戶端:伺服器傳送資料時,拿用戶的公鑰加密後送出。用戶端接收後,用自己的私鑰解密; (2)用戶端到伺服器:用戶端傳送資料時,拿伺服器的公鑰加密後送出。伺服器接收後,用伺服器的私鑰解密。

大意就是每台主機會有自己產生的金鑰+server發的公鑰來達成連線

先產生公私鑰

$ ssh-keygen

會詢問3個問題, 預設即可

  1. Enter file in which to save the key - 輸入金鑰的檔案路徑及名稱,預設是 ~/.ssh/id_rsa。
  2. Enter passphrase - 輸入自訂密碼。
  3. Enter same passphrase again - 再輸入一次自訂密碼。

此時會多了id_rsaid_rsa.pub兩個檔案

接下來複製到主機的家目錄暫時存放

$ scp ~/.ssh/id_rsa.pub USER@SSH_SERVER:~

USER@SSH_SERVER -> server的使用者@server ip

server的使用者也是未來不想打密碼的帳號

再來到server中設定將家目錄底下的.ssh目錄設定為本人才可讀寫

$ chmod 700 ~/.ssh

將複製過來的公鑰匯入授權清單

$ cat ~/id_rsa.pub >> ~/.ssh/authorized_keys

同樣須把authorized_keys權限設定為本人才可讀寫

$ chmod 600 ~/.ssh/authorized_keys

之後連線到這台server都不用打密碼啦~

 

https://stackoverflow.com/questions/23935141/how-to-copy-docker-images-from-one-host-to-another-without-using-a-repository

http://blog.itist.tw/2015/03/login-ssh-server-without-username-and-password.html

http://linux.vbird.org/linux_server/0310telnetssh.php