在物理機上部署 boot2docker 完全攻略

2021-07-12 02:46:58 字數 3443 閱讀 8147

名稱約定:

部署 boot2docker 的電腦稱為「服務端」。

要鏈結到 docker 服務端的電腦稱為「客戶端」。

home 目錄,是當前使用者目錄。windows 下在 %userprofile% 中,linux 或 os x 為 ~

準備:u 盤乙個,推薦閃迪酷豆,用於寫入 boot2docker.iso,僅僅需要 30 多 mb 的空間,多了也是浪費。

推薦:在 docker 客戶端上準備支援 ssh 協議的軟體,windows 下如 xshell 或者 git 等。

無「分割槽」的電腦一台作為 docker 服務端(可以是虛機)。

注意:在物理機上部署 boot2docker 會清空(服務端)硬碟上的所有資料。請提前將有用資料備份到其他物理介質上。

步驟:將 boot2docker.iso 使用軟體寫入 u 盤,這裡推薦 linux 或 os x 下的 dd 命令。

將服務端電腦設定成從 u 盤啟動。

注意:此處必須保證服務端電腦硬碟的 mbr 是空的,boot2docker.iso 會進行檢測。

如果沒有提前清理服務端硬碟資料,可以在服務端上執行 sudo dd if=/dev/zero of=/dev/sda bs=1k count=256 來刪除 mbr。

unpartitioned_hd=`fdisk -l | grep "doesn't contain a valid partition table" | head -n 1 | sed 's/disk \(.*\) doesn.*/\1/'`

disk_vendor=$(cat /sys/class/block/$(basename $unpartitioned_hd /dev/)/device/vendor /sys/class/block/$(basename $unpartitioned_hd /dev/)/device/model | tr -d "\n")

sudo sed -i "s/vmware, vmware virtual s/$disk_vendor/g;s/1000m/`free -m | grep mem | awk ''`m/g;s/ext4 -l/ext4 -i 8192 -l/g" /etc/rc.d/automount

sudo sh /etc/rc.d/automount

sudo reboot

最後一行會重啟服務端電腦,此時硬碟已經準備好了。之後進行 docker 相關操作會儲存在服務端硬碟上,而非記憶體之中。

變更 docker 使用者的密碼:

在 shell 上執行:

mypass=新密碼

printf %s "#!/bin/sh

echo 'docker:`echo $mypass | openssl passwd -1 -stdin`' | chpasswd -e

" | sudo tee /var/lib/boot2docker/bootlocal.sh

sudo chmod 755 /var/lib/boot2docker/bootlocal.sh

>.ash_history

「新密碼」要替換成你的密碼。

其中 /var/lib/boot2docker/bootlocal.sh 是 boot2docker 的開機啟動配置指令碼。可以將自己的自定義操作放入其中。

ssh 免密碼登入:

boot2docker.iso 會同時檢測 ~/.ssh/authorized_keys 和 ~/.ssh/authorized_keys2。

兩個檔案內容相同。

但由於 ~ (home)目錄是存在於記憶體中的,會在重啟後恢復初始狀態,

boot2docker.iso 原本的解決方案是將 authorized_keys2 檔案壓縮包寫入 mbr 中,會在系統啟動時自動釋放到 docker 的 home 路徑下。

此處使用 /var/lib/boot2docker/bootlocal.sh 來解決此問題。

首先在 /var/lib/boot2docker 下建立 authorized_keys 文字檔案,命令: sudo vi /var/lib/boot2docker/authorized_keys

會切換到 vi 操作介面。

將其客戶端電腦的 ssh 公鑰文字黏貼到此處,並儲存。ssh 公鑰檔案在 home 資料夾下的 .ssh 資料夾裡。檔名包含 pub 的就是。(此檔案由 ssh 客戶端軟體生成)

(黏貼後,用 esc 鍵退出編輯狀態,輸入 :wq 儲存並退出 vi 介面)

將下面**追加到 /var/lib/boot2docker/bootlocal.sh 中,操作同上。

su - docker -c "mkdir ~/.ssh && cat /var/lib/boot2docker/authorized_keys > ~/.ssh/authorized_keys && ln ~/.ssh/authorized_keys ~/.ssh/authorized_keys2"

這樣就能實現遠端 ssh 面密碼登入 docker 使用者了。

在客戶端電腦上執行 docker 命令:

然後將其放入客戶端 path 環境變數中。

在客戶端 home 資料夾下建立 .docker 資料夾。所有操作均使用 mkdir 命令建立即可。使用資源管理器建立可能無法成功。

將服務端 ~docker/.docker/ 目錄下的 ca.pem cert.pem key.pem 檔案複製到客戶端的 .docker/ 目錄中。

這三個檔案均為文字檔案,如果不會複製,可以使用類似 cat ~docker/.docker/ca.pem 命令,分別顯示這三個 pem 檔案的內容,複製內容到客戶端的對應檔案中。

在客戶端的環境變數中加入:

docker_host=tcp:

docker_tls_verify=1

其中 127.0.0.1 要替換成服務端的 ip 位址。

此時就可以在客戶端上執行 docker 命令來控**務端的 docker 服務了。

部署 smb (網路上的芳鄰)服務:

使用 docker 命令可以快速搭建 smb 服務,來讓客戶端方便的訪問服務端中的內容。

執行:docker pull dperson/samba

由於網路問題,如果不成功,請重複執行,直到成功為止。

然後執行:

docker run -d --name samba -p 139:139 -p 445:445 -v /volume1:/mount dperson/samba -u "share;123456" -s "volume2;/mount;yes;no;no"

其中 /volume1 是想要共享的服務端的路徑,share 123456 分別為 smb 的賬號密碼,volume2 為 smb 路徑。

其他詳細用法,參考 中的說明。

這時就可以通過 \\此處替換服務端ip位址\volume2 訪問服務端的 /volume1 路徑了。

注意:boot2docker 將硬碟掛載到類似 /mnt/sda1 的路徑之上,其他的路徑都是在記憶體之中的。

不要將檔案放入其他路徑。

在brew手機上部署工程

把乙個應用程式部署到 brew 手機上,主要是把下面的檔案拷進手機就行了。通過 brew sdk 帶的工具 loader 可以連線到手機。1.apl 檔案。乙個應用程式想要出現在手機的應用程式列表中,必須要有乙個 apl檔案,裡面主要設定程式在不同語言下的名稱 程式 icon 圖示和程式的 clas...

xCat在 虛擬機器上部署系統

現在vmware上建立管理節點mgmt,內網ip設為192.168.1.1,對應網絡卡為eth1,外網ip設為192.168.8.50,對應網絡卡為eth0 xcat core 2.6.10.tar.bz2 xcat dep 201202211937.tar.bz2 上傳到伺服器上,解壓縮之後。cd...

在Amazon EC2例項上部署ArcSDE

在國內目前還享受不到esri提供的幾種雲計算服務的任何一種的,話說回來,就是有你也不敢用,因為在國內訪問amazon那個速度慢的啊,還有那個牆,天知道他什麼時候發作。不過,研究研究還是需要的,同時,即使沒有esri的幫助,在amazon ec2的例項上部署arcgis的軟體也是可以自力更生的。其實這...