解決Dockerfile方式創建Docker下載慢問題

最近在學習Docker,系統環境是CentOS7

1. 下載緩慢

在使用Dockerfile創建Docker鏡像時,引用基礎鏡像和yum安裝都很緩慢。Dockerfile內容如下:

[kanou@192 static_web]$ cat Dockerfile
# Version: 0.0.1
FROM centos:7.7.1908
MAINTAINER kanou "[email protected]"
RUN yum update -y && yum install -y epel-release
RUN yum install -y nginx
#RUN echo 'Hi, I am in your container' > /usr/share/nginx/html/index.html
EXPOSE 80

2. 分析原因

由於默認Docker基礎鏡像源及yum源都是連接國外的地址,在國內訪問會比較緩慢。

3. 解決方法

修改Dockerfile中基礎鏡像CentOS7的鏡像加速器和yum源,但在Dockerfile要對這兩個內容進行修改比較麻煩,
於是想到先在本地CentOS7系統先將鏡像加速器和yum源的配置文件先修改好並拷貝到Dockerfile的上下文目錄中,
在Dockerfile中將本地配置文件拷貝到Dockerfile的目標基礎鏡像中,達到修改目標基礎鏡像的加速器和yum源的目的。
操作步驟如下:
(1)修改基礎鏡像加速器,因爲這些使用的是CentOS7,CentOS7可以通過修改daemon配置文件/etc/docker/daemon.json來使用加速器:\

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://9an8eogo.mirror.aliyuncs.com"]
}
EOF

將修改好的 daemon.json 複製到當前Docker創建上下文目錄 static_web 中(因爲Dockerfile只可以操作同一上下文目錄的文件),
然後在Dockerfile中使用 ADD 命令將 daemon.json 拷貝到目標基礎鏡像的 /etc/docker/daemon.json 目錄下。

修改方法參考鏈接:https://cr.console.aliyun.com/cn-qingdao/instances/mirrors?accounttraceid=2a028b8d92834921b155ca96c3c5f3e7ytyw

(2)修改Docker DNS
修改 /etc/resolv.conf文件內容

# Generated by NetworkManager
search localdomain
nameserver 114.114.114.114
nameserver 8.8.8.8

(3)修改yum源,這些使用了阿里雲的yum源,從阿里雲下載yum源配置文件:

wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

將修改好的 CentOS-Base.repo 複製到當前Docker創建上下文目錄 static_web 中(因爲Dockerfile只可以操作同一上下文目錄的文件),
然後在Dockerfile中使用 ADD 命令將 CentOS-Base.repo 拷貝到目標基礎鏡像的 /etc/yum.repos.d/CentOS-Base.repo 目錄下。

修改方法參考鏈接:https://developer.aliyun.com/mirror/centos?spm=a2c6h.13651102.0.0.3e221b11BXNk8Q

修改後的Dockerfile如下:

[kanou@192 static_web]$ cat Dockerfile
# Version: 0.0.1
FROM centos:7.7.1908
MAINTAINER kanou "[email protected]"
ADD daemon.json /etc/docker/daemon.json
ADD CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo
RUN yum clean all
RUN yum makecache
RUN yum update -y && yum install -y epel-release
RUN yum install -y nginx
#RUN echo 'Hi, I am in your container' > /usr/share/nginx/html/index.html
EXPOSE 80

經過鏡像加速器和yum源修改後,Dockerfile創建Docker鏡像速度快了很多。

發佈了21 篇原創文章 · 獲贊 23 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章