Docker Machine的使用


  前面兩篇文章(《Asp.Net Core 發布到 Docker(Linux Centos 虛擬機,使用Dockerfile)》 《Docker Compose的使用》),簡單介紹了Dockerfile和Compose的使用,主要是基於教學使用(或者快速上手Docker)。如果想要深入理解還是需要去看Docker官網。接下來介紹時,我會盡量詳細一些。

目錄:

  一、Virtualbox網絡設置

  二、Docker Machine 簡介和安裝

  三、Docker Machine Driver 的選擇

  四、創建 Machine 

  五、總結

一、虛擬機Virtualbox網絡設置

1.1 配置

  軟件配置:Windows 10(主機)+ Virtualbox(虛擬機)+ Centos 7 系統(虛擬機系統) + Docker

  虛擬機數量:2(使用相同的Virtualbox網絡配置)

1.2 Virtualbox的網絡連接方式

  參考:https://blog.csdn.net/bifengmiaozhuan/article/details/79887692

     https://www.cnblogs.com/jpfss/p/8616613.html

  關鍵點:

  

1.3 選擇網絡連接方式

  目標:

  • 主機和虛擬機互通
  • 虛擬機之間互通
  • 虛擬機上網

  根據要實現的目標,只有橋接模式符合(如果考慮安全性並且有多張網卡,可以使用網絡模式NAT+hostonly)。

二、Docker Machine 簡介和安裝

2.1 簡介

  官方介紹:https://docs.docker.com/machine/overview/

  Docker Machine 是一種配置新資源的最快且最簡單的方式,並能讓容器在其上運行。

  Docker Machine 能夠創建服務器、在服務器上安裝Docker ,以及配置本地Docker 客戶端,讓它們能夠訪問服務器。Docker Machine 自帶了很多驅動,能夠適配大部分主流的雲服務提供商(包括AWS、谷歌的Google Compute Enginer、微軟Azure、Digital  Ocean)以及VMWare 和VirtualBox。摘自《Docker開發指南》

2.2 安裝

  使用Docker github官方介紹進行安裝(https://github.com/docker/machine/releases/

  例如:linux 安裝命令

$ curl -L https://github.com/docker/machine/releases/download/v0.16.1/docker-machine-`uname -s`-`uname -m` >/tmp/docker-machine &&
    chmod +x /tmp/docker-machine &&
    sudo cp /tmp/docker-machine /usr/local/bin/docker-machine

  查看是否安裝成功

docker-machine version

 如上圖顯示,則安裝成功。

三、Docker Machine Driver的選擇

3.1 官方介紹

  參考:https://docs.docker.com/machine/drivers/

3.2 Driver 選擇

  根據虛擬機或者具體環境選擇不同的driver(這里使用的是Generic

四、創建 Machine

  參考:https://docs.docker.com/machine/drivers/generic/

4.1 生成SSH秘鑰,執行以下命令(一路Enter鍵即可)

ssh-keygen

4.2 認證

#192.168.0.7是目標主機IP(這里是另外一台虛擬機IP,可以使用ifconfig命令查看IP)
#root是登錄目標主機的登錄賬戶(如果不使用root賬戶,那其他賬戶最好是管理權限(docker需要root權限),並且不需要輸入sudo命令)
#生成的過程中需要輸入root賬戶的密碼
ssh-copy-id root@192.168.0.7 

4.3 創建 machine(需要目標主機是運行狀態)

$ docker-machine create \    #創建命令
  --driver generic \   #選擇的driver
  --generic-ip-address=192.168.0.7 \    #需要連接的目標主機IP(這里是另外一個虛擬機)
  --generic-ssh-key ~/.ssh/id_rsa \    #使用的證書
  vm1  #machine名稱

注意:命令需要執行一段時間(需要在目標主機上安裝Docker),不要停止(即不要按Ctrl+C鍵)

4. 4 執行環境變量,執行以下命令

docker-machine env vm1
eval $(docker-machine env vm1)

注意:這一步驟必須執行,否則目標主機不會同步命令(主機創建容器,但是目標主機不會創建)。

4.5 查看

執行以下命令,查看剛才創建的machine(需要目標主機是運行狀態)

docker-machine ls

正常顯示:

  

注意:

  如遇到以下錯誤(no roote to host),可以參考:https://www.jianshu.com/p/96aebba5d3cc

   需要執行以下命令:

#通過ssh命令登錄到目標主機(這里指另外一台虛擬機)
docker-machine ssh vm1 
#在防火牆開放指定端口
firewall-cmd --zone=public --add-port=2376/tcp --permanent 
#重啟firewall防火牆
firewall-cmd --reload 
#退出目標主機(這里指另外一台虛擬機) 
exit

4.6 創建一個redis容器,並且在目標主機上進行驗證  (按照以下命令進行執行和對比)

#創建容器myredis
docker run -d -p 6379:6379 --name myredis redis
#查看運行中的容器
docker ps
#使用ssh進入目標主機
docker-machine ssh vm1
#查看目標主機中正在運行的容器
docker ps
#退出目標主機
exit

舉例:

至此,創建machine成功。

五、總結

5.1 如果在虛擬機上使用docker-machine,需要注意虛擬機軟件(VMare/Virtualbox)的網絡連接方式

5.2 需要根據具體的情景,進行docker machine driver的選擇

5.3 需要目標主機防火牆(不建議直接關閉)的端口配置

 

參考資料:

https://www.cnblogs.com/jsonhc/p/7784466.html


免責聲明!

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



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