在學習 dockerfile 的時候,發現編寫的 Dockerfile 中的 apt-get install 命令無法找到要安裝的包,所以記錄一下這次發生的錯誤。
環境:宿主機:windows 10 上安裝 VMware 虛擬化軟件
VMware workstation 15 pro
客戶機:Ubuntu 18.04 STL
Dockerfile 內容:

FROM ubuntu:18.04 # 從 dockerhub 直接拉下來的官方鏡像 MAINTAINER zhangpeng<ssezhangpeng@gmail> ENV MYPATH /usr/local WORKDIR $MYPATH RUN apt-get -y install vim RUN apt-get -y install net-tools EXPOSE 80 CMD echo $MYPATH CMD echo "success---------------ok" CMD /bin/bash
出錯情景:
出錯原因:
在 Ubuntu 中,剛下載下來的 ubuntu 是沒有任何包索引的,所以由於該鏡像中的倉庫沒有添加任何包索引,導致找不到要安裝的包,在正常情況下,剛安裝完成 Ubuntu 后,都需要執行一下:apt-get update 命令來更新一下包索引,而其它系統則不需要,比如 centos 好像就不需要,會事先自動給你添加包索引。
解決辦法:
在 Dockerfile 中添加更新包索引的命令,重新構建鏡像即可。
更新后的 Dockerfile 文件:

FROM ubuntu:18.04 MAINTAINER zhangpeng<ssezhangpeng@gmail> ENV MYPATH /usr/local WORKDIR $MYPATH RUN apt-get update RUN apt-get -y install vim RUN apt-get -y install net-tools EXPOSE 80 CMD echo $MYPATH CMD echo "success---------------ok" CMD /bin/bash
注:如果出現下述的情況:
出錯情景:
出錯原因:
這種錯誤是因為無法解決 ‘archive.ubuntu.com’ 網址,及無法解析上述網址,所以我們可以想到是 DNS 的問題,如果你的宿主機的網絡設置是自己手工配置的,可能你的 DNS 服務器被手工設置為了:8.8.8.8 和 8.8.4.4 ,如下圖所示。但是在某些情況下,比如某些學校、企業內部封鎖了當前網絡對 8.8.8.8 DNS 服務器的訪問,這時,我們就不能正確解析上述出現錯誤的網址了。
注:下圖為 window 下的 ipv4 的屬性配置,如果你的宿主機是 Linux 系列,則可自行搜索找到自己的 DNS 配置
解決方法:
我們可以設置成別的可以訪問的 DNS 服務器地址,比如百度的 DNS 服務器(180.76.76.76);或者設置成上圖中的自動獲取 DNS 服務器地址即可。所以如果出現了下述情況,我們可以在自己的宿主機上 ping 8.8.8.8 ,看是否能訪問該 DNS服務器。
注:公共的 DNS 服務器地址列表可通過附錄鏈接進行查看
附錄鏈接:
https://blog.csdn.net/lennSUIkA/article/details/80157427