前面兩篇文章(《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 需要目標主機防火牆(不建議直接關閉)的端口配置
參考資料: