dockerfile---apt-get install vim 時 Unable to locate package vim


  在學習 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
Dockerfile

 

出錯情景

 

出錯原因

  在 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
Dockerfile

 

注:如果出現下述的情況:

出錯情景

 

出錯原因

  這種錯誤是因為無法解決 ‘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://dns.supfree.net/

https://blog.csdn.net/lennSUIkA/article/details/80157427

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM