Docker Machine

JIAN2發表於2022-11-28

Docker Machine


https://docs.docker.com/machine/overview/


# 安裝 Docker Machine
-- https://github.com/docker/machine
-- https://github.com/docker/machine/releases/
-- Docker Machine官網地址:https://docs.docker.com/machine/install-machine/
curl -L https://github.com/docker/machine/releases/download/v0.16.2/docker-machine-`uname -s`-`uname -m` >/tmp/docker-machine &&
    chmod +x /tmp/docker-machine &&
    sudo cp /tmp/docker-machine /usr/local/bin/docker-machine
wget https://github.com/docker/machine/releases/download/v0.16.2/docker-machine-Linux-x86_64
docker-machine version
base=https://raw.githubusercontent.com/docker/machine/v0.16.2
for i in docker-machine-prompt.bash docker-machine-wrapper.bash docker-machine.bash
do
  sudo wget "$base/contrib/completion/bash/${i}" -P /etc/bash_completion.d
done
wget https://raw.githubusercontent.com/docker/machine/v0.16.2/contrib/completion/bash/docker-machine-prompt.bash -P /etc/bash_completion.d
wget https://raw.githubusercontent.com/docker/machine/v0.16.2/contrib/completion/bash/docker-machine-wrapper.bash -P /etc/bash_completion.d
wget https://raw.githubusercontent.com/docker/machine/v0.16.2/contrib/completion/bash/docker-machine.bash -P /etc/bash_completion.d
cat >> ~/.bashrc << "EOF"
source /etc/bash_completion.d/docker-machine-wrapper.bash
source /etc/bash_completion.d/docker-machine-prompt.bash
source /etc/bash_completion.d/docker-machine.bash
 
PS1='[\u@\h \W$(__docker_machine_ps1)]\$ '
EOF
source ~/.bashrc
ssh-keygen
ssh-copy-id root@192.168.1.35
ssh-copy-id root@192.168.1.36
ssh-copy-id root@192.168.1.37
docker-machine ls
docker-machine create --driver generic --generic-ip-address=192.168.1.35 docker35
docker-machine create --driver generic --generic-ip-address=192.168.1.36 docker36
docker-machine create --driver generic --generic-ip-address=192.168.1.37 docker37
docker-machine env docker35
# docker-machine rm lhrdm12 -f


一、什麼是Docker Machine

  Docker Machine 是Docker官方編排專案之一,使用go語言編寫的,使用不同引擎在多種平臺上快速的安裝Docker環境,開源地址: https://github.com/docker/machine

  Docker Machine 是一個工具,它允許你在虛擬宿主機上安裝Docker,並使用docker-machine命令管理這個宿主機,可以使用Docker Machine在本地的MAC或者windows box、公司網路,資料中心或者AWS這樣的雲提供商上建立docker。

  使用docker-machine命令,可以啟動、審查、停止、重啟託管的docker 也可以升級Docker客戶端和守護程式並配置docker客戶端和宿主機通訊。

  Docker Machine 也可以集中管理所以得docker主機。

 

二、為什麼要使用Docker Machine

Docker Machine 使你能夠在各種 Linux 上配置多個遠端 Docker 宿主機。
此外,Machine 允許你在較早的 Mac 或 Windows 系統上執行 Docker,如上一主題所述。
Docker Machine 有這兩個廣泛的用例。

  • 我有一個較舊的桌面系統,並希望在 Mac 或 Windows 上執行 Docker

Docker(五):Docker 三劍客之 Docker Machine

如果你主要在不符合新的 Docker for Mac 和 Docker for Windows 應用程式的舊 Mac 或 Windows 膝上型電腦或桌上型電腦上工作,則需要 Docker Machine 來在本地“執行Docker”(即Docker Engine)。在 Mac 或 Windows box 中使用 Docker Toolbox 安裝程式安裝 Docker Machine 將為 Docker Engine 配置一個本地的虛擬機器,使你能夠連線它、並執行 docker 命令。

  • 我想在遠端系統上配置 Docker 宿主機

Docker(五):Docker 三劍客之 Docker Machine

Docker Engine Linux 系統上原生地執行。如果你有一個 Linux 作為你的主系統,並且想要執行 docker 命令,所有你需要做的就是下載並安裝 Docker Engine 。然而,如果你想要在網路上、雲中甚至本地配置多個 Docker 宿主機有一個有效的方式,你需要 Docker Machine。

無論你的主系統是 Mac、Windows 還是 Linux,你都可以在其上安裝 Docker Machine,並使用 docker-machine 命令來配置和管理大量的 Docker 宿主機。它會自動建立宿主機、在其上安裝 Docker Engine 、然後配置 docker 客戶端。每個被管理的宿主機(“machine”)是 Docker 宿主機和配置好的客戶端的結合。

三、Docker和Docker Machine之間的區別

當人們說“Docker”時,他們通常是指 Docker Engine,它是一個客戶端 - 伺服器應用程式,由 Docker 守護程式、一個REST API指定與守護程式互動的介面、和一個命令列介面(CLI)與守護程式通訊(通過封裝REST API)。Docker Engine 從 CLI 中接受docker 命令,例如 docker run <image>、docker ps 來列出正在執行的容器、docker images 來列出映象,等等。

Docker(五):Docker 三劍客之 Docker Machine

Docker Machine 是一個用於配置和管理你的宿主機(上面具有 Docker Engine 的主機)的工具。通常,你在你的本地系統上安裝 Docker Machine。Docker Machine有自己的命令列客戶端 docker-machine 和 Docker Engine 客戶端 docker。你可以使用 Machine 在一個或多個虛擬系統上安裝 Docker Engine。

這些虛擬系統可以是本地的(就像你在 Mac 或 Windows 上使用 Machine 在 VirtualBox 中安裝和執行 Docker Engine 一樣)或遠端的(就像你使用 Machine 在雲提供商上 provision Dockerized 宿主機一樣)。Dockerized 宿主機本身可以認為是,且有時就稱為,被管理的“machines”。

Docker(五):Docker 三劍客之 Docker Machine

四、安裝

  Docker Mechine 可以在多種平臺上安裝使用,包括Linux 、MacOS已經windows

  Docker Mechine 安裝非常的簡單:GitHub地址: https://github.com/docker/machine/releases/ 裡面有安裝教程(在寫這篇文章的時候最新版本是v0.15.0)

  安裝 Docker Mechine

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
[root@operation ~] # curl -L https://github.com/docker/machine/releases/download/v0.15.0/docker-machine-$(uname -s)-$(uname -m) >/tmp/docker-machine
   % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                  Dload  Upload   Total   Spent    Left  Speed
100   617    0   617    0     0    462      0 --:--:--  0:00:01 --:--:--   463
100 26.8M  100 26.8M    0     0  1000k      0  0:00:27  0:00:27 --:--:-- 1373k
[root@operation ~] # chmod +x /tmp/docker-machine
[root@operation ~] # cp /tmp/docker-machine /usr/local/bin/docker-machine
 
# 檢視版本確認是否安裝成功
[root@operation ~] # docker-machine -v
docker-machine version 0.15.0, build b48dc28d
 
# 安裝自動補全功能
[root@operation ~] # yum -y install bash-completion
[root@operation ~] # scripts=( docker-machine-prompt.bash docker-machine-wrapper.bash docker-machine.bash ); for i in "${scripts[@]}"; do wget https://raw.githubusercontent.com/docker/machine/v0.15.0/contrib/completion/bash/${i} -P /etc/bash_completion.d; done
 
# 新增以下
[root@operation ~] # cat ~/.bashrc
# .bashrc
 
# User specific aliases and functions
 
alias  rm = 'rm -i'
alias  cp = 'cp -i'
alias  mv = 'mv -i'
 
# Source global definitions
if  [ -f  /etc/bashrc  ];  then
         /etc/bashrc
fi
 
source  /etc/bash_completion .d /docker-machine-wrapper . bash
source  /etc/bash_completion .d /docker-machine-prompt . bash
source  /etc/bash_completion .d /docker-machine . bash
 
PS1= '[\u@\h \W$(__docker_machine_ps1)]\$ '
 
# 使之生效
[root@operation ~] # source ~/.bashrc

  到此位置docker-machine就安裝完成了!

五、引數

  支援命令

命令 說明
active 檢視當前啟用狀態的Docker主機
config 檢視當前啟用狀態Docker主機的連線資訊
creat  建立Docker主機
env 顯示連線到某個主機需要的環境變數
inspect 以json格式輸出指定Docker的詳細資訊
ip 獲取指定Docker主機的地址
kill 直接殺死指定的Docker主機
ls 列出所有的管理主機
provision 重新配置指定主機
regenerate-certs 為某個主機重新生成TLS資訊
restart 重啟指定的主機
rm 刪除某臺Docker主機,對應的虛擬機器也會被刪除
ssh 通過SSH連線到主機上,執行命令
scp 在Docker主機之間以及Docker主機和本地主機之間通過scp遠端複製資料
mount 使用SSHFS從計算機裝載或解除安裝目錄
start 啟動一個指定的Docker主機,如果物件是個虛擬機器,該虛擬機器將被啟動
status 獲取指定Docker主機的狀態(包括:Running、Paused、Saved、Stopped、Stopping、Starting、Error)等
stop 停止一個指定的Docker主機
upgrade 將一個指定主機的Docker版本更新為最新
url 獲取指定Docker主機的監聽URL
version 顯示Docker Machine的版本或者主機Docker版本
help 顯示幫助資訊

  支援的平臺及驅動引擎

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# 平臺
1.常規Linux作業系統;
 
2.虛擬化平臺-VirtualBox,VMware,Hyper-V
 
3.Openstack
 
4.公有云-Amazon Web Services,Microsoft Azure,Google Compute Engine,Digital Ocean等
 
Docker Machine為這些環境起了一個統一的名字:provider
 
對於特定的某個provider,Docker Machine使用相應的driver安裝配置docker host
 
# 驅動引擎
amazonec2
azure
digitalocean
exoscale
generic
google
hyperv
none
openstack
rackspace
softlayer
virtualbox
vmwarevcloudair
vmwarefusion
vmwarevsphere
 
# 指定方式
使用引數 -d 或者 --driver 驅動引擎名稱

  說白了都是虛擬化平臺和雲平臺的驅動檔案

六、使用

  通過Docker Machine 建立docker(我用了兩臺機器)

  • 192.168.31.43  安裝docker machine的機器  主機名:operation
  • 192.168.31.188  被管理的機器       主機名:client1

  建立步驟:

  1. 配置主機間的SSH免密(在192.168.31.43上面建立)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
# 生成keys並配置可以免密登入主機(這個是必須要做的)
[root@operation ~] # ssh-keygen
Generating public /private  rsa key pair.
Enter  file  in  which  to save the key ( /root/ . ssh /id_rsa ):
Created directory  '/root/.ssh' .
Enter passphrase (empty  for  no passphrase):
Enter same passphrase again:
Your identification has been saved  in  /root/ . ssh /id_rsa .
Your public key has been saved  in  /root/ . ssh /id_rsa .pub.
The key fingerprint is:
SHA256:0Fq7VlowSsDqSStOn4veIoTxFbW2RB059qXMSzLblKg root@operation
The key's randomart image is:
+---[RSA 2048]----+
|   ...o..o       |
|    oo o=   .    |
|   . .*.=* +     |
|. o .+ *++O      |
|.= +  +.SBo.     |
|oo=   E .=o      |
|+.. .   +        |
|.ooo   .         |
|oo.o.            |
+----[SHA256]-----+
 
# 將keys拷貝到client1上去
[root@operation ~] # ssh-copy-id root@192.168.31.188
/usr/bin/ssh-copy-id : INFO: Source of key(s) to be installed:  "/root/.ssh/id_rsa.pub"
The authenticity of host  '192.168.31.188 (192.168.31.188)'  can't be established.
ECDSA key fingerprint is SHA256:6MKhx743bCMD3Ay+ELNpKnq1+3 /wltcrPhbuyEclZj8 .
ECDSA key fingerprint is MD5:e8:6d:14:7e:41:da:96:4b:2c:92:f8:61:cc:f4:7b:14.
Are you sure you want to  continue  connecting ( yes /no )?  yes
/usr/bin/ssh-copy-id : INFO: attempting to log  in  with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id : INFO: 1 key(s) remain to be installed --  if  you are prompted now it is to  install  the new keys
root@192.168.31.188's password:
 
Number of key(s) added: 1
 
Now try logging into the machine, with:    "ssh 'root@192.168.31.188'"
and check to  make  sure that only the key(s) you wanted were added.
 
# 測試是否可以免密登入
[root@operation ~] # ssh root@192.168.31.188
Last login: Fri Oct 12 15:27:45 2018 from 192.168.31.104
[root@client1 ~] # exit

  2. 使用docker machine建立docker host

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
# 使用docker machine 建立
# 對於docker machine來將,術語Machine就是執行docker daemon的主機,建立machine就是在host上安裝docker
# 執行docker-macine ls檢視當前的machine
[root@operation ~] # docker-machine ls
NAME   ACTIVE   DRIVER   STATE   URL   SWARM   DOCKER   ERRORS
 
# 當前還沒有一個machine,接下來我們建立第一個machine:docker188-192.168.31.188  
[root@operation ~] # docker-machine create --driver generic --generic-ip-address=192.168.31.188 docker188
Running pre-create checks...
Creating machine...
(docker188) No SSH key specified. Assuming an existing key at the default location.
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 centos...
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: docker-machine  env  docker188
 
注意:這裡會出現Error creating machine: Error running provisioning: error installing docker:  這樣的錯誤 原因就是因為網路的原因,沒有安裝docker
 
# 建立成功執行ls檢視
[root@operation ~] # docker-machine  ls
NAME        ACTIVE   DRIVER    STATE     URL                         SWARM   DOCKER        ERRORS
docker188   -        generic   Running   tcp: //192 .168.31.188:2376           v18.06.1-ce  
 
# 登入到client檢視配置項
[root@operation ~] # ssh root@192.168.31.188
Last login: Fri Oct 12 16:19:10 2018 from 192.168.31.43
[root@docker188 ~] # cat /etc/systemd/system/docker.service.d/10-machine.conf
[Service]
ExecStart=
ExecStart= /usr/bin/dockerd  -H tcp: //0 .0.0.0:2376 -H unix: ///var/run/docker .sock --storage-driver devicemapper --tlsverify --tlscacert  /etc/docker/ca .pem --tlscert  /etc/docker/server .pem --tlskey  /etc/docker/server-key .pem --label provider=generic
Environment=
 
注:-H tcp: //0 .0.0.0:2376 使docker daemon接受遠端連線
 
       --tls*對遠端連線啟用安全認證和加密
 
注:大家可能會發現這裡的主機名變成了docker188 原因就是docker-machine建立的時候會把主機名也一起修改
  
# 檢視docker188的環境變數
[root@operation ~] # docker-machine env docker188
export  DOCKER_TLS_VERIFY= "1"
export  DOCKER_HOST= "tcp://192.168.31.188:2376"
export  DOCKER_CERT_PATH= "/root/.docker/machine/machines/docker188"
export  DOCKER_MACHINE_NAME= "docker188"
# Run this command to configure your shell:
# eval $(docker-machine env docker188)
 
# 根據提示執行
[root@operation ~] # eval $(docker-machine env docker188)
[root@operation ~ [docker188]] #
 
可以看到,命令提示符變成了docker188,其原因是我們之前在 /root/ .bashrc裡面配置了 PS1= '[\u@\h \W$(__docker_machine_ps1)]\$ ' ,用於顯示當前的docker host
注:如果我們輸入 eval  $(docker-machine  env  docker1)沒有顯示出docker188的命令提示符,我們可以重新輸入一遍 PS1= '[\u@\h \W$(__docker_machine_ps1)]\$ '
在此狀態下執行的docker命令其效果都相當於在docker188上執行
 
[root@operation ~ [docker188]] # docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
[root@operation ~ [docker188]] # docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE

  3. 其他命令操作

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
# 其他命令
# create 命令
選項包括:
·--driver,-d "none"                              指定驅動型別;
·--engine- install -url "https://get.docker.com"    配置Dokcer主機時候的安裝URL;
·--engine-opt option                            以鍵值對格式指定所建立Docker引擎的引數;
·--engine-insecure-registry option              以鍵值對格式指定所建立Docker引擎允許訪問的不支援認證的註冊倉庫服務;
·--engine-registry-mirror option                指定使用註冊倉庫映象;
·--engine-label option                          為所建立的Docker引擎新增標籤;
·--engine-storage-driver                        儲存後端驅動型別;
·--engine- env  option                            指定環境變數;
·--swarm                                        指定使用Swarm;
·--swarm-image "swarm:latest"                    使用Swarm時候採用的映象;
·--swarm-master                                 配置機器作為Swarm叢集的master節點;
·--swarm-discovery                              Swarm叢集的服務發現機制引數;
·--swarm-strategy "spread"                        Swarm預設排程策略;
·--swarm-opt option                             任意傳遞給Swarm的引數;
·--swarm-host "tcp://0.0.0.0:3376"               指定地址將監聽 Swarm master節點請求;
·--swarm-addr                                   從指定地址傳送廣播加入Swarm叢集服務。
 
例項:
docker-machine create -d virtualbox \
--engine-storage-driver overlay \
--engine-label name=testmachine \
--engine-label year=2018 \
--engine-opt dns=8.8.8.8 \
--engine- env  HTTP_PROXY=http: //proxy .com:3128 \
--engine-insecure-registry registry.private.com \
mydockermachine
  
# active命令
[root@operation ~] # docker-machine ls
NAME        ACTIVE   DRIVER    STATE     URL                         SWARM   DOCKER        ERRORS
docker188   -        generic   Running   tcp: //192 .168.31.188:2376           v18.06.1-ce  
 
# 這裡的狀態是沒有被啟用
[root@operation ~] # docker-machine env docker188
export  DOCKER_TLS_VERIFY= "1"
export  DOCKER_HOST= "tcp://192.168.31.188:2376"                            # 啟用主機
export  DOCKER_CERT_PATH= "/root/.docker/machine/machines/docker188"
export  DOCKER_MACHINE_NAME= "docker188"
# Run this command to configure your shell:
# eval $(docker-machine env docker188)
 
[root@operation ~] # export DOCKER_HOST="tcp://192.168.31.188:2376"
[root@operation ~] # docker-machine ls
NAME        ACTIVE   DRIVER    STATE     URL                         SWARM   DOCKER        ERRORS
docker188   *        generic   Running   tcp: //192 .168.31.188:2376           v18.06.1-ce  
[root@operation ~] # docker-machine active
docker188
 
# config命令
[root@operation ~] # docker-machine config docker188
--tlsverify
--tlscacert= "/root/.docker/machine/machines/docker188/ca.pem"
--tlscert= "/root/.docker/machine/machines/docker188/cert.pem"
--tlskey= "/root/.docker/machine/machines/docker188/key.pem"
-H=tcp: //192 .168.31.188:2376
 
# inspect命令
[root@operation ~] # docker-machine inspect docker188
{
     "ConfigVersion" : 3,
     "Driver" : {
         "IPAddress" "192.168.31.188" ,
         "MachineName" "docker188" ,
         "SSHUser" "root" ,
         "SSHPort" : 22,
         "SSHKeyPath" "" ,
         "StorePath" "/root/.docker/machine" ,
         "SwarmMaster" false ,
         "SwarmHost" "" ,
         "SwarmDiscovery" "" ,
         "EnginePort" : 2376,
         "SSHKey" ""
     },
     "DriverName" "generic" ,
     "HostOptions" : {
         "Driver" "" ,
         "Memory" : 0,
         "Disk" : 0,
         "EngineOptions" : {
             "ArbitraryFlags" : [],
             "Dns" : null,
             "GraphDir" "" ,
             "Env" : [],
             "Ipv6" false ,
             "InsecureRegistry" : [],
             "Labels" : [],
             "LogLevel" "" ,
             "StorageDriver" "" ,
             "SelinuxEnabled" false ,
             "TlsVerify" true ,
             "RegistryMirror" : [],
             "InstallURL" "https://get.docker.com"
         },
         "SwarmOptions" : {
             "IsSwarm" false ,
             "Address" "" ,
             "Discovery" "" ,
             "Agent" false ,
             "Master" false ,
             "Host" "tcp://0.0.0.0:3376" ,
             "Image" "swarm:latest" ,
             "Strategy" "spread" ,
             "Heartbeat" : 0,
             "Overcommit" : 0,
             "ArbitraryFlags" : [],
             "ArbitraryJoinFlags" : [],
             "Env" : null,
             "IsExperimental" false
         },
         "AuthOptions" : {
             "CertDir" "/root/.docker/machine/certs" ,
             "CaCertPath" "/root/.docker/machine/certs/ca.pem" ,
             "CaPrivateKeyPath" "/root/.docker/machine/certs/ca-key.pem" ,
             "CaCertRemotePath" "" ,
             "ServerCertPath" "/root/.docker/machine/machines/docker188/server.pem" ,
             "ServerKeyPath" "/root/.docker/machine/machines/docker188/server-key.pem" ,
             "ClientKeyPath" "/root/.docker/machine/certs/key.pem" ,
             "ServerCertRemotePath" "" ,
             "ServerKeyRemotePath" "" ,
             "ClientCertPath" "/root/.docker/machine/certs/cert.pem" ,
             "ServerCertSANs" : [],
             "StorePath" "/root/.docker/machine/machines/docker188"
         }
     },
     "Name" "docker188"
}
  
# ssh命令
[root@operation ~] # docker-machine ssh docker188 docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
alpine              latest              196d12cf6ab1        4 weeks ago         4.41MB
 
[root@operation ~] # docker-machine ssh docker188   
Last login: Fri Oct 12 16:36:49 2018 from 192.168.31.43
[root@docker188 ~] #
 
# url命令
[root@operation ~] # docker-machine url docker188                  
tcp: //192 .168.31.188:2376
 
# status命令
[root@operation ~] # docker-machine status docker188
Running
 
# version命令
[root@operation ~] # docker-machine version docker188
18.06.1-ce

   注:還有一些命令就不一一列出了,可以檢視上面的引數命令表,具體命令的使用方法可以通過--help檢視

   注:Machine安裝docker環境中會因網路或其他情況造成安裝失敗,使用中發現,這種安裝失敗頻率很高,感覺沒有使用的價值,說白了,一個公司作業系統一般不會超過兩個發行版,寫個指令碼一鍵安裝也許會更方便!

七、總結

Docker Machine 最主要有兩個作用:

  • 使用 Docker Machine 方便在不同的環境中使用 Docker ,比如:Win/Mac
  • 使用 Docker Machine 方便在雲環境下批量部署 Docker環境,比如:私有云,公有云批量安裝Docker環境

八、參考連結

官方地址: https://docs.docker.com/machine/

官方驅動詳細使用方法: https://docs.docker.com/machine/drivers/

參考文件: https://www.cnblogs.com/lkun/p/7781157.html



Docker Machine

簡介

Docker Machine 是一種可以讓您在虛擬主機上安裝 Docker 的工具,並可以使用 docker-machine 命令來管理主機。

Docker Machine 也可以集中管理所有的 docker 主機,比如快速的給 100 臺伺服器安裝上 docker。

Docker Machine

Docker Machine 管理的虛擬主機可以是機上的,也可以是雲供應商,如阿里雲,騰訊雲,AWS,或 DigitalOcean。

使用 docker-machine 命令,您可以啟動,檢查,停止和重新啟動託管主機,也可以升級 Docker 客戶端和守護程式,以及配置 Docker 客戶端與您的主機進行通訊。

Docker Machine


安裝

安裝 Docker Machine 之前你需要先安裝 Docker。

Docker Mechine 可以在多種平臺上安裝使用,包括 Linux 、MacOS 以及 windows。

Linux 安裝命令

$ base=https://github.com/docker/machine/releases/download/v0.16.0 &&
  curl -L $base/docker-machine-$(uname -s)-$(uname -m) >/tmp/docker-machine &&
  sudo mv /tmp/docker-machine /usr/local/bin/docker-machine &&
  chmod +x /usr/local/bin/docker-machine

macOS 安裝命令

$ base=https://github.com/docker/machine/releases/download/v0.16.0 &&
  curl -L $base/docker-machine-$(uname -s)-$(uname -m) >/usr/local/bin/docker-machine &&
  chmod +x /usr/local/bin/docker-machine

Windows 安裝命令

如果你是 Windows 平臺,可以使用  Git BASH,並輸入以下命令:

$ base=https://github.com/docker/machine/releases/download/v0.16.0 &&
  mkdir -p "$HOME/bin" &&
  curl -L $base/docker-machine-Windows-x86_64.exe > "$HOME/bin/docker-machine.exe" &&
  chmod +x "$HOME/bin/docker-machine.exe"

檢視是否安裝成功:

$ docker-machine version
docker-machine version 0.16.0, build 9371605

使用

本章通過 virtualbox 來介紹 docker-machine 的使用方法。其他雲服務商操作與此基本一致。具體可以參考每家服務商的指導文件。

1、列出可用的機器

可以看到目前只有這裡預設的 default 虛擬機器。

$ docker-machine ls

Docker Machine

2、建立機器

建立一臺名為 test 的機器。

$ docker-machine create --driver virtualbox test
  • --driver:指定用來建立機器的驅動型別,這裡是 virtualbox。

Docker Machine

3、檢視機器的 ip

$ docker-machine ip test

Docker Machine

4、停止機器

$ docker-machine stop test

Docker Machine

5、啟動機器

$ docker-machine start test

Docker Machine

6、進入機器

$ docker-machine ssh test

Docker Machine

docker-machine 命令引數說明

  • docker-machine active:檢視當前啟用狀態的 Docker 主機。

    $ docker-machine ls
    NAME      ACTIVE   DRIVER         STATE     URL
    dev       -        virtualbox     Running   tcp://192.168.99.103:2376staging   *        digitalocean   Running   tcp://203.0.113.81:2376$ echo $DOCKER_HOST
    tcp://203.0.113.81:2376$ docker-machine active
    staging
  • config:檢視當前啟用狀態 Docker 主機的連線資訊。
  • creat:建立 Docker 主機
  • env:顯示連線到某個主機需要的環境變數
  • inspect: 以 json 格式輸出指定Docker的詳細資訊
  • ip: 獲取指定 Docker 主機的地址
  • kill: 直接殺死指定的 Docker 主機
  • ls: 列出所有的管理主機
  • provision: 重新配置指定主機
  • regenerate-certs: 為某個主機重新生成 TLS 資訊
  • restart: 重啟指定的主機
  • rm: 刪除某臺 Docker 主機,對應的虛擬機器也會被刪除
  • ssh: 通過 SSH 連線到主機上,執行命令
  • scp: 在 Docker 主機之間以及 Docker 主機和本地主機之間通過 scp 遠端複製資料
  • mount: 使用 SSHFS 從計算機裝載或解除安裝目錄
  • start: 啟動一個指定的 Docker 主機,如果物件是個虛擬機器,該虛擬機器將被啟動
  • status: 獲取指定 Docker 主機的狀態(包括:Running、Paused、Saved、Stopped、Stopping、Starting、Error)等
  • stop: 停止一個指定的 Docker 主機
  • upgrade: 將一個指定主機的 Docker 版本更新為最新
  • url: 獲取指定 Docker 主機的監聽 URL
  • version: 顯示 Docker Machine 的版本或者主機 Docker 版本
  • help: 顯示幫助資訊









About Me

........................................................................................................................

● 本文作者:小麥苗,部分內容整理自網路,若有侵權請聯絡小麥苗刪除

● 本文在itpub、部落格園、CSDN和個人微 信公眾號( DB寶)上有同步更新

● 本文itpub地址: http://blog.itpub.net/26736162

● 本文部落格園地址: http://www.cnblogs.com/lhrbest

● 本文CSDN地址: https://blog.csdn.net/lihuarongaini

● 本文pdf版、個人簡介及小麥苗雲盤地址: http://blog.itpub.net/26736162/viewspace-1624453/

● 資料庫筆試面試題庫及解答: http://blog.itpub.net/26736162/viewspace-2134706/

● DBA寶典今日頭條號地址: http://www.toutiao.com/c/user/6401772890/#mid=1564638659405826

........................................................................................................................

● QQ群號: 230161599 、618766405

● 微 信群:可加我微 信(lhrbestxh),我拉大家進群,非誠勿擾

● 聯絡我請加QQ好友 646634621 ,註明新增緣由

● 於 2020-06-01 06:00 ~ 2020-06-30 24:00 在西安完成

● 最新修改時間:2020-06-01 06:00 ~ 2020-06-30 24:00

● 文章內容來源於小麥苗的學習筆記,部分整理自網路,若有侵權或不當之處還請諒解

● 版權所有,歡迎分享本文,轉載請保留出處

........................................................................................................................

小麥苗的微店https://weidian.com/s/793741433?wfr=c&ifr=shopdetail

小麥苗出版的資料庫類叢書http://blog.itpub.net/26736162/viewspace-2142121/

小麥苗OCP、OCM、高可用網路班http://blog.itpub.net/26736162/viewspace-2148098/

小麥苗騰訊課堂主頁https://lhr.ke.qq.com/

........................................................................................................................

請掃描下面的二維碼來關注小麥苗的微 信公眾號( DB寶)及QQ群(230161599、618766405)、新增小麥苗微 信(lhrbestxh), 學習最實用的資料庫技術。

........................................................................................................................

歡迎與我聯絡

 

 



來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26736162/viewspace-2697237/,如需轉載,請註明出處,否則將追究法律責任。

相關文章