用前端姿勢玩docker【五】快速構建中類Unix系統與Windows系統的差異化處理

目錄

跨平臺兼容性問題解決

前端開發工作中,主流的還是windows和mac,我們的目的是在windows和mac下能夠儘可能地實現一致性。這個一致性體現在:

  1. docker的安裝與初始化
  2. docker 容器的使用
  3. 開發中的各種操作過程

安裝

  • Mac直接看官方文檔

  • windows 上安裝docker分爲兩種:

  1. docker for windows
    此方式要求windows系統必須能夠啓動 hyperV服務,而如果能夠啓動hyperV,基本上意味着都要是windows專業版,印象當中即便是家庭版也對版本有要求。

    優點:方便,快捷

    缺點:對系統有要求,不能做到任意機器均可使用

  2. 使用docker-toolbox通過docker-machine創建docker虛擬機
    此方式通過使用 docker quickstart terminal快速創建docker虛擬機,然後通過docker-machine控制虛擬機,並在虛擬機中跑docker服務。

    優點:門檻低

    缺點:官方文檔說明已經不建議使用此方法;配置較爲複雜

總結

類Unix系統上,docker使用都很方便。關鍵是windows上需要斟酌考慮:

  1. 如果需要滿足老舊的機器快速構建環境,不想去考慮各種系統類型(專業版、家庭版)、版本等問題。則建議使用docker-machine創建docker虛擬機的方法。

  2. 如果是在單一機器上使用docker,且長期固定使用同一臺機器,那麼docker for windows一定是最佳選擇。
    關於mac與windows啓動便利性上,可以編寫相應的.sh與.bat文件做啓動文件。

windows docker-toolbox 安裝docker問題彙總

  • 無法使用私庫:若配合鏡像私庫使用,則需要修改docker-toolbox下的sart.sh在docker-machine create那一行增加參數:
"${DOCKER_MACHINE}" create -d virtualbox --virtualbox-no-vtx-check $PROXY_ENV --engine-registry-mirror http://hub-mirror.c.163.com --engine-insecure-registry 私庫域名或ip "${VM}"
  • 進入docker容器後無法ping通外網

    若可ping同域名,無法ping同ip:則需要添加dns,在 /var/lib/boot2docker/profile文件中增加 --dns=8.8.8.8,注意此處有 = 號

    域名ip均無法ping通:在上文中同樣的文件中添加bip配置 --bip 172.17.5.0/24,注意此時無等號

  • windows VirtualBox軟鏈接錯誤: symlink(): Read-only file system

    需要使用VBoxManage開啓軟連接功能,步驟如下:

    1. 關閉VirtualBox
    2. 爲VirtualBox增加環境變量
    3. 啓動軟鏈功能:執行命令: VBoxManage.exe setextradata default VBoxInternal2/SharedFoldersEnableSymlinksCreate//mnt/project 1 其中default爲虛擬機名稱,/mnt/project 爲啓動軟鏈功能的目錄
    4. 查看是否啓動成功: 執行命令:VBoxManage.exe getextradata default enumerate ,能看到存在以下內容即爲開啓成功:Key: VBoxInternal2/SharedFoldersEnableSymlinksCreate//mnt/project, Value: 1
  • windows中通過VirtualBox開啓docker虛擬機,啓動容器後,在容器內啓動webpack-dev-server,外網無法訪問:

    docker-machine ssh進入docker虛擬機後,ip addr查看192網段的ip,並通過此ip加端口在宿主機訪問即可。

  • 啓動容器後,開啓dev-server,修改代碼後,宿主機瀏覽器無法熱更新:

    在VirtualBox中的文件系統下,webpack無法自動開啓熱更,需要手動添加watchOptions開啓輪詢:具體時間根據個人機器情況決定

    watchOptions: {
        poll: 1500
    }
    
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章