Docker Machine
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 for Mac 和 Docker for Windows 應用程式的舊 Mac 或 Windows 膝上型電腦或桌上型電腦上工作,則需要 Docker Machine 來在本地“執行Docker”(即Docker Engine)。在 Mac 或 Windows box 中使用 Docker Toolbox 安裝程式安裝 Docker Machine 將為 Docker Engine 配置一個本地的虛擬機器,使你能夠連線它、並執行 docker 命令。
- 我想在遠端系統上配置 Docker 宿主機
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 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 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 管理的虛擬主機可以是機上的,也可以是雲供應商,如阿里雲,騰訊雲,AWS,或 DigitalOcean。
使用 docker-machine 命令,您可以啟動,檢查,停止和重新啟動託管主機,也可以升級 Docker 客戶端和守護程式,以及配置 Docker 客戶端與您的主機進行通訊。
安裝
安裝 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
2、建立機器
建立一臺名為 test 的機器。
$ docker-machine create --driver virtualbox test
- --driver:指定用來建立機器的驅動型別,這裡是 virtualbox。
3、檢視機器的 ip
$ docker-machine ip test
4、停止機器
$ docker-machine stop test
5、啟動機器
$ docker-machine start test
6、進入機器
$ docker-machine ssh test
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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Docker Machine簡介DockerMac
- Docker學習—MachineDockerMac
- 使用docker-machineDockerMac
- Docker(五):Docker 三劍客之 Docker MachineDockerMac
- 七. Docker Machine的安裝DockerMac
- [第十四篇]——Docker MachineDockerMac
- Docker Machine遠端部署docker主機環境DockerMac
- Docker Toolbox替換預設docker machine的儲存位置DockerMac
- 047、管理Docker Machine(2019-03012 週二)DockerMac
- 046、建立Docker Machine(2019-03-11 週一)DockerMac
- Docker系列開篇之Virtual Machine VS Container(一)DockerMacAI
- Docker基礎、Machine、Compose、Swarm入門與實踐DockerMacSwarm
- 【Machine Teaching】An Overview of Machine TeachingMacView
- Machine Learning (12) - Support Vector Machine (SVM)Mac
- Shuffling MachineMac
- 《machine learning》引言Mac
- Machine Learning with SklearnMac
- Machine Learning-IntroductionMac
- Machine Learning - Basic pointsMac
- ECE 5041 Electric MachineMac
- docker-machine無法在macOS上建立計算機,VBoxManage返回E_ACCESSDENIED錯誤DockerMac計算機
- Machine Learning (1) - Linear RegressionMac
- Extreme Learning Machine 翻譯REMMac
- pages bookmarks for machine learning domainMacAI
- Machine Learning(13)- Random ForestMacrandomREST
- Machine Learning (10) - Decision TreeMac
- Azure Virtual Machine (Azure for Students)Mac
- Machine learning terms_01Mac
- Configuring the launch of the remote virtual machine to debugREMMac
- The Ethereum Virtual Machine(EVM)簡介Mac
- 演算法題 - Shuffling Machine演算法Mac
- Machine Learning (5) - Training and Testing DataMacAI
- SciTech-BigDataAIML-Machine Learning TutorialsAIMac
- What is a mobile phone film cutting machine?Mac
- Machine Learning Yearning 要點筆記Mac筆記
- 如何使用Time Machine備份MacMac
- Machine Learning(14) - K Fold Cross ValidationMacROS
- Machine Learning (6) - Logistic Regression (Binary Classification)Mac