寫在前面環境要求:1.vagrant 2.virtualbox
vagrant下載地址:https://www.vagrantup.com/downloads.html
virtualbox下載地址:https://www.virtualbox.org/wiki/Downloadshtml
官方倉庫:https://atlas.hashicorp.com/boxes/search
官方鏡像:https://vagrantcloud.com/boxes/search
第三方倉庫:http://www.vagrantbox.es/linux
本文將採起centos7做爲實驗基礎鏡像
因爲網絡緣由,在此提供下載百度雲鏡像地址centos7:https://pan.baidu.com/s/19mcMNhyHrCH0jwXTEMWitwdocker
在cmd窗口中,執行以下命令:shell
vagrant box add centos7 d:/iso/CentOS-7-x86_64-Vagrant-1804_02.VirtualBox.box 1
*** 命令參考json
vagrant box add {title} {url} 1
說明:title 建立虛擬機的別名;url 是下載到本地box的路徑,也能夠是服務器端的URL,也能夠是中央倉庫的鏡像名稱。centos
找到須要存放該實例的位置,在cmd窗口中執行以下命令,本文存放在d:/vagrant服務器
vagrant init centos/7 1
vagrant init centos7 1
執行第二步後,會有Vagrantfile文件生成。編輯該文件尾部加入網絡
config.vm.provision "shell", inline: <<-SHELL apt-get update curl -s https://get.docker.com|sh SHELL 1234
如圖所示
說明:在SHELL內容中 能夠寫linux命令,讀者可自定義,虛擬機啓動後須要的步驟。本文只是下載了docker。ssh
在cmd窗口中,執行以下命令:curl
vagrant up 1
啓動日誌信息以下:
注:啓動日誌中包含了ssh鏈接信息以及用戶名等等
在cmd窗口中,執行以下命令,鏈接上虛擬機:
vagrant ssh 1
接下來的步驟都是在該虛擬機中操做。
在cmd窗口中,執行以下命令,並輸入新密碼,切換到root用戶下
sudo passwd //.....輸入兩次新密碼 su root 123
因爲ssh默認是用ca認證,沒開放密碼驗證,故有此步驟
cd /etc/ssh vi sshd_config 12
將內容中的
# To disable tunneled clear text passwords, change to no here! #PasswordAuthentication yes #PermitEmptyPasswords no PasswordAuthentication no 1234
改成
# To disable tunneled clear text passwords, change to no here! PasswordAuthentication yes #PermitEmptyPasswords no #PasswordAuthentication no 1234
,修改完成後,重啓sshd.service服務
service sshd restart 1
接下來讀者能夠經過ssh工具鏈接該虛擬機。本文使用xshell。
因爲docker倉庫在外網,國內訪問較慢,故使用阿里雲鏡像加速。
在xshell鏈接該虛擬機,並在該窗口中執行以下命令:
sudo tee /etc/docker/daemon.json <<-'EOF' { "registry-mirrors": ["https://vcmrfdsm.mirror.aliyuncs.com"] } EOF sudo systemctl daemon-reload sudo systemctl restart docker 1234567
在xshell窗口中,執行以下命令:
systemctl enable docker 1
在cmd窗口中,進入到要備份的Vagrant文件的目錄中,例如上面使用的目錄d:/vagrant,執行以下命令,關閉虛擬機,導出鏡像:
D:\vagrant>vagrant halt ==> default: Attempting graceful shutdown of VM... D:\vagrant>vagrant package --base centos7-docker --output d:/iso/centos7-docker.box ==> centos7-docker: Clearing any previously set forwarded ports... ==> centos7-docker: Exporting VM... ==> centos7-docker: Compressing package to: d:/iso/centos7-docker.box 123456
注:centos7-docker 虛擬機的名稱,這個名稱本人已修改
本來如圖中所示
讀者能夠用過VirtualBox的設置進行修改
這樣讀者就擁有了一個具備docker的centos7鏡像了
命令 | 做用 |
---|---|
vagrant box add | 添加box的操做 |
vagrant init | 初始化box的操做,會生成vagrant的配置文件Vagrantfile |
vagrant up | 啓動本地環境 |
vagrant ssh | 經過ssh登陸本地環境所在虛擬機 |
vagrant halt | 關閉本地環境 |
vagrant suspend | 暫停本地環境 |
vagrant resume | 恢復本地環境 |
vagrant reload | 修改了Vagrantfile後,使之生效(至關於先 halt,再 up) |
vagrant destroy | 完全移除本地環境 |
vagrant box list | 顯示當前已經添加的box列表 |
vagrant box remove | 刪除相應的box |
vagrant package | 打包命令,能夠把當前的運行的虛擬機環境進行打包 |
vagrant plugin | 用於安裝卸載插件 |
vagrant status | 獲取當前虛擬機的狀態 |
vagrant global-status | 顯示當前用戶Vagrant的全部環境狀態 |