Docker for windows on VMware
工作環境
操作系統:Windows 10 Pro x64
Hyper-V:已卸載。
VMware:已安裝。
Virtual Box:無安裝。
前言
鑒於Hyper-V在Windows桌面系統下的"弱雞"表現,包括不僅限於"網路"方面都很"辣雞",各種不兼容的原因。
我決定(禁用/卸載)Hyper-V,卻又不想用其默認的Virtual Box,於是改成最為喜愛的VMware Workstation,作為Docker machine的driver。
以上對於三個虛擬機的好與壞,只是個人親身使用後的感受,或許沒有全面了解過它們的優良之處,請勿噴,可以指教,謝謝。
然而Docker官方並不支持VMware Workstation驅動,不過我從Docker官方指導文檔中找到第三方支持:https://docs.docker.com/machine/drivers
正文
下載二進位文件 -- docker-machine-driver-vmwareworkstation.exe,複製到docker-machine.exe的同級目錄下,注意:如果你是
1.通過InstallDocker.msi安裝的,複製到C:Program FilesDockerDocker
esourcesin下。
2.通過DockerToolbox.exe安裝的,複製到C:Program FilesDocker Toolbox下。
2.1如果是通過DockerToolbox.exe安裝的,還需要修改C:Program FilesDocker Toolboxstart.sh腳本文件內容為:
#!/bin/bash
export PATH="$PATH:/mnt/c/Program Files (x86)/VMware/VMware Workstation"
trap "[ "$?" -eq 0 ] || read -p "Looks like something went wrong in step ′$STEP′... Press any key to continue..."" EXIT
VM=${DOCKER_MACHINE_NAME-default}
DOCKER_MACHINE=./docker-machine.exe
BLUE=" 33[1;34m"
GREEN=" 33[0;32m"
NC=" 33[0m"
if [ ! -f "${DOCKER_MACHINE}" ]; then
echo "Docker Machine is not installed. Please re-run the Toolbox Installer and try again."
exit 1
fi
vmrun.exe list | grep ""${VM}"" &> /dev/null
VM_EXISTS_CODE=$?
set -e
STEP="Checking if machine $VM exists"
if [ $VM_EXISTS_CODE -eq 1 ]; then
"${DOCKER_MACHINE}" rm -f "${VM}" &> /dev/null || :
rm -rf ~/.docker/machine/machines/"${VM}"
#set proxy variables if they exists
if [ -n ${HTTP_PROXY+x} ]; then
PROXY_ENV="$PROXY_ENV --engine-env HTTP_PROXY=$HTTP_PROXY"
fi
if [ -n ${HTTPS_PROXY+x} ]; then
PROXY_ENV="$PROXY_ENV --engine-env HTTPS_PROXY=$HTTPS_PROXY"
fi
if [ -n ${NO_PROXY+x} ]; then
PROXY_ENV="$PROXY_ENV --engine-env NO_PROXY=$NO_PROXY"
fi
"${DOCKER_MACHINE}" create -d vmwareworkstation $PROXY_ENV "${VM}"
fi
STEP="Checking status on $VM"
VM_STATUS="$(${DOCKER_MACHINE} status ${VM} 2>&1)"
if [ "${VM_STATUS}" != "Running" ]; then
"${DOCKER_MACHINE}" start "${VM}"
yes | "${DOCKER_MACHINE}" regenerate-certs "${VM}"
fi
STEP="Setting env"
eval "$(${DOCKER_MACHINE} env --shell=bash ${VM})"
STEP="Finalize"
clear
cat << EOF
## .
## ## ## ==
## ## ## ## ## ===
/"""""""""""""""""\___/ ===
~~~ {~~ ~~~~ ~~~ ~~~~ ~~~ ~ / ===- ~~~
\______ o __/
__/
\____\_______/
EOF
echo -e "${BLUE}docker${NC} is configured to use the ${GREEN}${VM}${NC} machine with IP ${GREEN}$(${DOCKER_MACHINE} ip ${VM})${NC}"
echo "For help getting started, check out the docs at https://docs.docker.com"
echo
cd
docker {
MSYS_NO_PATHCONV=1 docker.exe "$@"
}
export -f docker
if [ $# -eq 0 ]; then
echo "Start interactive shell"
exec "$BASH" --login -i
else
echo "Start shell with command"
exec "$BASH" -c "$*"
fi
3.打開git-bash,輸入以下命令:
3.1.docker-machine ls
檢查是否有machine實例,如果有,請自行考慮是否卸載它。
3.2.docker-machine stop dev && docker-machine rm dev
暫停並且卸載NAME為dev的machine實例。此處的dev每個人都不同,可能是default或其它,具體看docker-machine ls命令列出來的數據。
3.2.1.docker-machine create --driver=vmwareworkstation dev
創建一個名稱為dev的machine實例。
3.2.2.當然了,如果你做了2.1步驟的動作,你也可以不做3.2.1步驟的動作。
而是直接在你的桌面上找到一個名為"Docker Quickstart Terminal"的藍色Docker命令行圖標
,並且雙擊運行它。
首次運行它時,會檢查你是否有創建一個名為"default"的實例,如果有,則直接啟動命令操作界面,如果沒有,則幫你創建並且初始化一個名為"default"的實例,並且active為默認實例。
當有一個默認的machine實例後,你通過docker命令所做的操作,都是對默認實例的操作。
3.3.docker-machine ls
查看實例列表信息,在這裡你可以看到實例的狀態信息,包括版本,IP,名稱等。
3.4.eval "$(docker-machine env dev)" && docker-machine active
此處兩個命令在同一個shell窗口分開執行,或一併執行都可以。
eval "$(docker-machine env dev)"這句話的意思是載入名為"dev"的machine實例的環境變數到當前的shell窗口。
docker-machine active的作用是,從上一句話載入進來的環境變數中獲取到要激活的machine實例名稱,並且激活它。
激活指定的machine實例為默認實例。一個docker只能有一個被激活的默認實例。
3.5.docker-machine ssh dev
連接到machine實例之後,你可以使用docker命令進行任何受支持的操作...
例如docker push,pull等等....
PS:此處,如果你進行了3.2.2或3.4步驟的操作,可以不需要進行3.5步驟的操作。
直接使用docker命令就可以正常使用docker開發了。
參考資料
下載資源匯總


※開源 .net license tool, EasyLicense !
※C語言之複雜鏈表的複製
※Java多線程(二)——線程安全、線程同步、線程間通信
※Redis事務原理分析
※2017CCPC中南地區賽 H題
TAG:達人科技 |
※Windows Install Docker
※Windows Docker 安裝
※Docker 小記—Compose&Swarm
※在docker for win中使用portainer管理容器
※centos7 install docker-ce
※MacOS Install Docker
※Docker編程 Hello World
※Docker-Window環境下安裝,使用入門hello-world示例
※windows7上使用docker容器
※Docker將與MuleSoft展開合作,Salesforce坐收漁利
※docker-compose ,docker-stack
※通過 Docker 實現在 Linux 容器中運行 Microsoft SQL Server 資料庫
※Docker教程:Docker Compose入門
※使用gradle生成Spring Boot應用的Docker Image
※Docker下使用selenium+testng實現web自動化
※UCloud 葉理燈談:Docker、K8S 和 Serverless
※UCloud葉理燈談:Docker、K8S和Serverless
※Docker 創始人 Solomon Hykes 宣布從 Docker 離職
※大神解說在unbuntu下Docker安裝oracle和mysql
※Solomon Hykes!Docker 再見了……