1. 程式人生 > >Docker(二)docker-machine建立虛擬機器

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連線雲伺服器》