Wiindows安裝docker 在轉換成linux模式的時候不能使用,只能退而求其次安裝Docker ToolBox在windows10中使用docker。
一、前言
由於本機使用的是win10家庭版操作系統,無法直接Docker for Windows安裝,因此只好使用Docker Toolbox。在安裝過程中遇到了不少問題,花費了不少時間,才把docker啟動起來。在此記錄一下過程,以供參考。
二、准備工作
2.1 操作系統
要安裝docker,首先要確保操作系統是64位且win7以上的版本。如果操作系統是win10 pro,可以直接使用Docker for Windows安裝。本文是基於win10 家庭版安裝。
2.2 開啟虛擬化
開機進入BIOS,找到“Intel Virtual Technology”類似的選項,設置為Enabled。
注:
如果安裝有360安全衛士,最好先關閉它的核晶保護引擎。步驟:打開360安全衛士的主面板,點擊左下角的防護中心,在彈出的頁面中,點擊右上角一個像勛章的圖標,關閉核晶保護引擎。
2.3 關閉Hyper-V
打開控制面板,依次點擊程序 -> 程序和功能 -> 啟用或關閉Windows功能,找到Hyper-V,不要勾選,點擊確定。如果沒找到Hyper-V,就不用管了。
2.4 安裝PowerShell
此步驟可以先不用做,如果后面用到了,再來安裝不遲。
安裝方法:https://docs.microsoft.com/en-us/powershell/scripting/install/installing-powershell?view=powershell-6
三、下載並安裝Docker Toolbox
3.1 下載Docker Toolbox
下載地址:https://docs.docker.com/toolbox/toolbox_install_windows/。
這個頁面除了可以下載Docker Toolbox外,還有Docker Toolbox的安裝教程。可以先自行按上面的步驟進行安裝,若在之后啟動docker時遇到了問題,再回來看剩下的部分也不遲。
3.2 安裝Docker Toolbox
雙擊Docker Toolbox.exe, 一路點擊NEXT, 安裝路徑我設置的是E:\DockerToolbox。
安裝完成后,會出現如下幾個圖標:
雙擊Docker Quickstart Terminal, 如果出現如下頁面,說明Docker已啟動成功,后面的內容就不需要再看了。
四、啟動Docker
4.1 創建docker machine
打開power shell(如果還未安裝,參考2.4),進入Docker Toolbox的安裝目錄,可以看到這個下面有docker-machine.exe、boot2docker.iso和start.sh幾個文件。
在power shell中執行如下命令:
$ docker-machine.exe create --driver virtualbox --virtualbox-boot2docker-url=boot2docker.iso default
輸出如下:
注:docker-machine.exe雖然是個可執行文件,直接雙擊卻沒什么用,需要指定參數來配合。
4.2 啟動docker machine
在power shell中執行start.sh,會新彈出一個bash窗口,輸出如下信息:
$ ./start.sh
注:start.sh里面涉及到一些文件路徑,這些文件路徑是windows的。使用bash來執行可能會出現找不到文件的問題。
比如E:\DockerToolbox\docker-machine.exe需改成/mnt/e/DockerToolbox/docker-machine.exe才能被bash正確的找到。
之所以說是可能會出現,是因為我在使用power shell創建default docker machine后,直接在bash中執行start.sh,結果也能正常運行了。。。
所以,在安裝過程中,為保險起見,還是使用power shell吧。
4.3 使用docker
docker machine啟動之后,就可以在bash里面正常使用docker的相關命令了。
4.4 關閉docker machine
執行如下命令:
$ docker-machine.exe stop default
注:也可以使用Oracle VM VirtualBox來關閉。Oracle VM VirtualBox是用來管理docker machine的圖形界面工具,在步驟3.2中可以看到。
4.5 刪除docker machine
執行如下命令:
$ docker-machine.exe rm default
也可以使用Oracle VM VirtualBox來刪除。
五、鏡像加速
可以通過修改鏡像倉庫地址,加速docker 鏡像的拉取。
執行docker-machine ssh default
$ docker-machine ssh default ( '>') /) TC (\ Core is distributed with ABSOLUTELY NO WARRANTY. (/-_--_-\) www.tinycorelinux.net
設置鏡像地址
接下來執行sudo sed -i "s|EXTRA_ARGS='|EXTRA_ARGS='--registry-mirror=https://registry.docker-cn.com |g",
此處鏡像地址使用的是https://registry.docker-cn.com,可自行更換。
執行完畢后,執行exit退出。
docker@default:~$ cat /var/lib/boot2docker/profile EXTRA_ARGS=' --label provider=virtualbox ' CACERT=/var/lib/boot2docker/ca.pem DOCKER_HOST='-H tcp://0.0.0.0:2376' DOCKER_STORAGE=aufs DOCKER_TLS=auto SERVERKEY=/var/lib/boot2docker/server-key.pem SERVERCERT=/var/lib/boot2docker/server.pem docker@default:~$ docker@default:~$ sudo sed -i "s|EXTRA_ARGS='|EXTRA_ARGS='--registry-mirror=https://registry.docker-cn.com |g" /var/lib/boot2docker/profile docker@default:~$ cat /var/lib/boot2docker/profile EXTRA_ARGS='--registry-mirror=https://registry.docker-cn.com --label provider=virtualbox ' CACERT=/var/lib/boot2docker/ca.pem DOCKER_HOST='-H tcp://0.0.0.0:2376' DOCKER_STORAGE=aufs DOCKER_TLS=auto SERVERKEY=/var/lib/boot2docker/server-key.pem SERVERCERT=/var/lib/boot2docker/server.pem docker@default:~$ exit
重啟docker-machine
$ docker-machine restart default Restarting "default"... (default) Check network to re-create if needed... (default) Windows might ask for the permission to configure a dhcp server. Sometimes, such confirmation window is minimized in the taskbar. (default) Waiting for an IP... Waiting for SSH to be available... Detecting the provisioner... Restarted machines may have new IP addresses. You may need to re-run the `docker-machine env` command.
六、安裝問題一覽
問題1
雙擊Docker Quickstart Terminal,提示windows 正在查找bash.exe。如果想親自查找文件,請點擊“瀏覽”。
問題原因
一般出現這個問題,是因為之前已經安裝過了git,且bash.exe的路徑與Docker Toolbox中不一致導致的。
解決辦法
右擊Docker Quickstart Terminal的圖標,修改前一段bash的路徑。
問題2
雙擊Docker Quickstart Terminal,bash窗口一閃而過。
問題原因
窗口一閃而過,一般是程序運行出錯了,需要找到錯誤信息。通過問題1知道這個快捷方式是使用bash執行start.sh,所以考慮直接在bash中執行start.sh。打開bash.exe,執行start.sh,發現輸出如下一段文字:
Docker Machine is not installed. Please re-run the Toolbox Installer and try again.
使用編輯器打開start.sh,會發現如下兩端代碼:
export PATH="$(win_to_unix_path "${DOCKER_TOOLBOX_INSTALL_PATH}"):$PATH" VM=${DOCKER_MACHINE_NAME-default} DOCKER_MACHINE="${DOCKER_TOOLBOX_INSTALL_PATH}\docker-machine.exe" // ... 省略 if [ ! -f "${DOCKER_MACHINE}" ]; then echo "Docker Machine is not installed. Please re-run the Toolbox Installer and try again." exit 1 fi
發現是因為找不到docker-machine.exe報的錯。docker-machine.exe的路徑跟DOCKER_TOOLBOX_INSTALL_PATH這個變量有關。查看環境變量,發現確實沒有DOCKER_TOOLBOX_INSTALL_PATH。
解決辦法
第一個辦法是直接在start.sh里面修改DOCKER_MACHINE的地址,但這種方式治標不治本。
第二個辦法是手動創建系統變量DOCKER_TOOLBOX_INSTALL_PATH,也是治標不治本
第三個辦法是使用docker-machine.exe創建一個docker machine(參考4.1),docker machine創建完成之后,環境變量里就會有DOCKER_TOOLBOX_INSTALL_PATH。
問題3
執行start.sh報與boot2docker.iso相關的錯誤:
Running pre-create checks... (default) Unable to get the local Boot2Docker ISO version: Did not find prefix "-v" in version string (default) Default Boot2Docker ISO is out-of-date, downloading the latest release... (default) Latest release for github.com/boot2docker/boot2docker is v18.09.0 (default) Downloading C:\Users\zhangcm\.docker\machine\cache\boot2docker.iso from https://github.com/boot2docker/boot2docker/releases/download/v18.09.0/boot2docker.iso... Error with pre-create check: "Get https://github-production-release-asset-2e65be.s3.amazonaws.com/14930729/6ae43280-e2b8-11e8-8e32-e857d71a28cd?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAIWNJYAX4CSVEH53A%2F20190105%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20190105T054430Z&X-Amz-Expires=300&X-Amz-Signature=c16df60be023a5e71aa4091d3be41418973da7b46029860b0c7817ef4c6aac22&X-Amz-SignedHeaders=host&actor_id=0&response-content-disposition=attachment%3B%20filename%3Dboot2docker.iso&response-content-type=application%2Foctet-stream: dial tcp 127.0.0.1:443: connectex: No connection could be made because the target machine actively refused it." Looks like something went wrong in step ´Checking if machine default exists´... Press any key to continue...
解決方法
其實Docker Toolbox安裝路徑下已經有boot2docker.iso文件了。參考4.1,創建一個docker machine。然后再執行start.sh。
如果是提示boot2docker.iso的版本過舊,則需要下載一個新版本。
下載地址:https://github.com/boot2docker/boot2docker/releases。
選擇一個版本,點擊boot2docker.iso文件下載。點擊后會自動跳轉到另一個域名(https://github-production-release-asset-2e65be.s3.amazonaws.com),需翻牆。
轉自:https://www.jianshu.com/p/2aa5b05717c6
非常感謝!
