Docker(二)docker-machine建立虛擬機器
一、利用docker-machine,在本地建立Linux虛擬機器
docker-machine(工具)會隨著Docker.dmg的安裝自動安裝好,docker-machine也可以做為工具單獨安裝。
本質上docker-machine是一個虛擬機器管理工具,它通過建立一個安裝好docker的虛擬機器(支援VirtualBox,DigitalOcean,EC2等),並設定對應的環境變數(DOCKER_HOST,DOCKER_MACHINE_NAME等),使得本地的docker工具獲得透明遠端操作虛擬機器的能力。從而使本身不支援docker的Windows和Mac系統能夠直接使用docker命令。
安裝好docker後,進入終端檢視docker-machine版本:
docker-machine -version
安裝Linux虛擬機器(該命令安裝好虛擬機器後,會自動在虛擬機器上安裝Docker服務,本地主機需要安裝好VirtualBox
軟體):
docker-machine create demo
安裝成功後輸出:
Docker is up and running!
To see how to connect your Docker Client to the Docker Engine running on this virtual machine, run : docker-machine env demo
安裝完成後,檢視VirtualBox軟體發現已經出現一臺名為demo的虛擬機器。
進入本機終端,列出當前已經建立或正在執行的虛擬機器:
docker-machine ls
輸出:
NAME ACTIVE DRIVER STATE URL SWARM DOCKER ERRORS
demo - virtualbox Running tcp://192.168.99.100:2376 v18.04.0-ce
可以看到已經出現了名為demo的虛擬機器
進入到demo機器裡面:
docker-machine ssh demo
還有其他docker-machine命令,使用命令提示:
# 提示所有命令
docker-machine --help
二、本地docker client連線虛擬機器的docker daemon
在本地關閉docker服務後,執行docker version
,輸出:
Client:
Version: 18.03.0-ce
API version: 1.37
Go version: go1.9.4
Git commit: 0520e24
Built: Wed Mar 21 23:06:22 2018
OS/Arch: darwin/amd64
Experimental: false
Orchestrator: swarm
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
可以看到此時本機的docker client無法連線到本機的docker deamon
進入本機終端,打印出demo虛擬機器中的環境變數:
docker-machine env demo
輸出:
export DOCKER_TLS_VERIFY="1"
export DOCKER_HOST="tcp://192.168.99.100:2376"
export DOCKER_CERT_PATH="/Users/xiangshaopeng/.docker/machine/machines/pengwork1"
export DOCKER_MACHINE_NAME="pengwork1"
# Run this command to configure your shell:
# eval $(docker-machine env pengwork1)
執行命令:
eval $(docker-machine env demo)
該命令的意思就是把$(docker-machine env demo)
的輸出當做shell命令在當前shell下執行。最終的結果就是當前shell下多了幾個環境變數,docker client就是靠著這些環境變數來決定和docker daemon互動的行為的。
最後在終端執行docker version
輸出:
Client:
Version: 18.03.0-ce
API version: 1.37
Go version: go1.9.4
Git commit: 0520e24
Built: Wed Mar 21 23:06:22 2018
OS/Arch: darwin/amd64
Experimental: false
Orchestrator: swarm
Server:
Engine:
Version: 18.04.0-ce
API version: 1.37 (minimum version 1.12)
Go version: go1.9.4
Git commit: 3d479c0
Built: Tue Apr 10 18:23:35 2018
OS/Arch: linux/amd64
Experimental: false
此時本地docker client已經成功的連線到了demo虛擬機器中的docker daemon
關於docker-machine連線阿里雲伺服器的相關步驟,請閱讀下篇部落格:
《Docker(三)docker-machine連線雲伺服器》