相信大家在進行docker實踐的過程中或多或少都會遇到一些問題,本篇文章博主主要對自己實踐過程中遇到的問題進行一個總結,希望會對大家有所幫助。
問題一:當執行指令docker-machine create時提示No default boot2docker iso found Iocally, downloading the latest release...
解決方案:手動下載需要的boot2docker iso檔案,然後放到指定的路徑下。
具體步驟:
1. 通過瀏覽器訪問如下地址:api.github.com/repos/boot2… (注意該地址可能需要翻牆訪問),找到"html_url": "https://github.com/boot2docker/boot2docker/releases/tag/v18.09.5"
該地址就是最新的boot2docker iso檔案的下載地址
2. 如圖所示找到所需的安裝包並下載:
3. 將下載好的檔案放到如下路徑:/User/{username}/.docker/machine/cache/
4. 重新執行docker-machine create指令即可
問題二:operating system "windows" cannot be used on this platform or operating system "Linux" cannot be used on this platform
解決方案:
不同型別container下build出來的image只能在所對應的型別的container下執行,比如不能在windows container中執行linux container build出來的image
問題三:當執行docker-machine scp指令將本地檔案copy到docker-machine create指令建立的虛擬機器中時,可能會遇到如圖所示的情況:
需要我們輸入賬號的密碼,但是我們在通過docker-machine create指令建立vm的時候根本沒有要求輸入賬號和密碼
解決方案:通過linux sudo passwd指令手動修改賬號的密碼
具體步驟:
1. 進入到我們建立的vm中
2. 執行sudo passwd account-name
3. 我們就可以利用修改之後的密碼來訪問了
問題四:在使用docker-compose.yml檔案來管理service的時候,執行docker stack deploy -c docker-compose.yml stack-name指令時可能會遇到類似如下問題:
networks Additional property networks is not allowed
replicas Additional property replicas is not allowed
解決方案:
該篇檢查YAML檔案格式,為大家提供一個YAML檔案線上校驗器 大家可以通過這個線上校驗器來檢查自己的YAML檔案格式,YAML檔案中key: value, key的冒號和value之間需要有一個空格,大家一定要注意
問題五:在通過指令docker swarm init建立docker容器叢集時遇到如下錯誤:
Error response from daemon: could not choose an IP address to advertise since this system has multiple addresses on different interfaces (XXX ip on eth0 and XXX ip on eth1) - specify one with --advertise-addr
解決方案:遇到該問題的原因是因為我們的膝上型電腦大部分都是雙網路卡,在建立docker叢集的時候需要指定一個固定的ip和port,以便可以讓其他子節點加入到該叢集中,根據錯誤提示我們可以使用如下指令解決這個問題:
docker swarm init --advertise-addr ip:port
我會根據自己在使用docker過程中遇到的問題不斷的更新該篇文章,希望能夠幫到大家。