一步步創建第一個Docker App —— 2. 創建 Docker化 主機



部署voting app的第一步,是為集群節點(swarm nodes)創建 Docker machines。我們可以在不同的實體PC、虛擬機或者雲服務器上創建這些 Docker化 的主機。

在本例中,我們使用 Docker Machine 來創建兩個虛擬機(virtual machines)在同一個系統上 (See  Docker Machine Overview  to learn more.)。

創建 manager 和 worker 虛擬機

使用 docker machine 創建一個本地的 virtual machine
docker-machine create --driver hyperv <HOSTNAME>
這里使用的是 windows 里的 hyperv 創建的虛擬機

創建過程中出現一個 
   Error creating machine: Error in driver during machine creation: exit status 1
解決方案:
  •    按照鏈接https://docs.docker.com/machine/drivers/hyper-v/的說明,配置系統。
  •    首先在Hyperv管理工具里面,創建一個新的虛擬交換機,並使用外部鏈接(如果不指定,默認鏈接到系統的DockerNAT上,它是在docker安裝時候創建的,用於 docker for windows 的,不是給我們使用的)
  •    然后將創建的新虛擬機,主動鏈接到該交換機上 
  •    重啟
  •    注意:創建虛擬交換機時,要選擇實體網卡;創建過程要在管理員模式下進行,不然會出現一直停在waiting for host
下面是一個創建的例子:
PS  C:\WINDOWS\system32>  docker -machine  create  -d  hyperv - -hyperv -virtual -switch  "Primary Virtual Switch"  - -hyperv -disk -size  "5000"  - -hyperv -memory  "512"  manager
Running pre -create  checks...
Creating machine...
(manager1) Copying C:\Users\Vicky\.docker\machine\cache\boot2docker.iso to C:\Users\Vicky\.docker\machine\machines\manag
er1\boot2docker.iso...
(manager1) Creating SSH key...
(manager1) Creating VM...
(manager1) Using switch  "Primary Virtual Switch"
(manager1) Creating VHD
(manager1) Starting VM...
(manager1) Waiting for host to start...
Waiting for machine to be running, this may take a few minutes...
Detecting operating system of created instance...
Waiting for SSH to be available...
Detecting the provisioner...
Provisioning with boot2docker...
Copying certs to the local machine directory...
Copying certs to the remote machine...
Setting Docker configuration on the remote daemon...
Checking connection to Docker...
Docker is up and running!
To see how to connect your Docker Client to the Docker Engine running on this virtual machine, run: C:\Program Files\Doc
ker\Docker\Resources\bin\docker -machine .exe env manager1
PS  C:\WINDOWS\system32>
 
驗證虛擬機的IP地址
使用命令   docker-machine ls  來驗證。
PS  C:\Users\Administrator> docker -machine  ls
NAME      ACTIVE   DRIVER   STATE     URL                       SWARM   DOCKER    ERRORS
manager   -        hyperv   Running   tcp://192.168.0.9:2376            v1.13.1
worker    -        hyperv   Running   tcp://192.168.0.10:2376           v1.13.1
這樣就有了 兩個 docker化 的虛擬機,每一個都獨自運行一個 Docker Engine。可以通過 Docker CLI 通信,並且可以配置為集群節點(Swarm nodes)。
 

與虛擬機交互

下面講述兩種與創建的虛擬機交互的方式:

通過pre-configured shell來管理虛擬機

我們可以使用 docker-machine 命令,在shell中設置虛擬機的環境變量。這樣,我們在本地shell上的 Docker 命令,就會在對應的虛擬機上運行。

1. 運行 docker-machine env manager 命令,獲得環境變量
PS  C:\Users\Administrator> docker -machine  env manager
$Env :DOCKER_TLS_VERIFY =  "1"
$Env :DOCKER_HOST =  "tcp://192.168.0.9:2376"
$Env :DOCKER_CERT_PATH =  "C:\Users\Administrator\.docker\machine\machines\manager"
$Env :DOCKER_MACHINE_NAME =  "manager"
$Env :COMPOSE_CONVERT_WINDOWS_PATHS =  "true"
# Run this command to configure your shell:
# & "C:\Program Files\Docker\Docker\Resources\bin\docker-machine.exe" env manager | Invoke-Expression

2. 使用最后一行的命令 
& "C:\Program Files\Docker\Docker\Resources\bin\docker-machine.exe" env manager | Invoke-Expression
將shell連接到 manager 虛擬機。

3。 再次運行 docker-machine ls 命令:
PS  C:\Users\Administrator> docker -machine  ls
NAME      ACTIVE   DRIVER   STATE     URL                       SWARM   DOCKER    ERRORS
manager   *        hyperv   Running   tcp://192.168.0.9:2376            v1.13.1
worker    -        hyperv   Running   tcp://192.168.0.10:2376           v1.13.1
可以發現,manager后面出現一個星號,表示的當前,shell已經連接到了 manager 虛擬機。這樣,在shell中運行的命令,將會在 manager 虛擬機上執行。(可以用同樣的方法,連接到 worker 虛擬機,一個shell可以同時連接多個虛擬機進行操作)

使用 ssh 登錄虛擬機

可以使用命令  docker-machine ssh <MACHINE-NAME>  來登錄到某台虛擬機上.
PS  C:\Users\Administrator> docker -machine  ssh manager
                         ##         .
                   ## ## ##        ==
                ## ## ## ## ##    ===
            / "" "" "" "" "" "" "" "" "\___/ ===
       ~~~ {~~ ~~~~ ~~~ ~~~~ ~~~ ~ /  ===- ~~~
            \______ o           __/
              \    \         __/
               \____\_______/
  _                 _   ____     _            _
| |__   ___   ___ | |_|___ \ __| | ___   ___| | _____ _ __
'_ \ / _ \ / _ \| __| __) / _` |/ _ \ / __| |/ / _ \ ' __|
| |_) | (_) | (_) | |_ / __/ (_| | (_) | (__|   <  __/ |
|_.__/ \___/ \___/ \__|_____\__,_|\___/ \___|_|\_\___|_|
Boot2Docker version 1.13.1, build HEAD : b7f6033 - Wed Feb  8 20:31:48 UTC 2017
Docker version 1.13.1, build 092cba3
docker@manager:~$

What’s next?

我們將會用 這兩個 Docker machines 創建一個集群(swarm)。





免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM