阿里云ECS启动Docker容器无法访问外网

初次在ECS使用docker,如文章所述有误,劳烦看官留言指正,谢过!

日期:2017-07-19
平台: 阿里云 ECS
操作系统: Centos 7
注明日期,只是辅助看官参考,随时间过去,文中所述不一定适用您遇到的问题。

言归正传

本文重点讲,ECS中docker build 不能访问外网的问题,
所以,如何安装或部署golang服务,请参考
使用alpinelinux 构建 golang http

创建镜像的Dockerfile如下:

FROM  alpine:latest
MAINTAINER demo <juest a demo>

RUN echo -e "https://mirror.tuna.tsinghua.edu.cn/alpine/latest-stable/main\n\
https://mirrors.aliyun.com/alpine/v3.6/main" >> /etc/apk/repositories

RUN apk add --update curl bash && \
    rm -rf /var/cache/apk/*

RUN mkdir -p /data/go
COPY http /data/go

EXPOSE 8080

ENTRYPOINT ["/data/go/http"]

提示如下错误:

...
fetch https://mirror.tuna.tsinghua.edu.cn/alpine/latest-stable/main/x86_64/APKINDEX.tar.gz
ERROR: https://mirror.tuna.tsinghua.edu.cn/alpine/latest-stable/main: temporary error (try again later)
WARNING: Ignoring APKINDEX.951f4ce6.tar.gz: No such file or directory
fetch https://mirror.tuna.tsinghua.edu.cn/alpine/latest-stable/community/x86_64/APKINDEX.tar.gz
ERROR: https://mirror.tuna.tsinghua.edu.cn/alpine/latest-stable/community: temporary error (try again later)
WARNING: Ignoring APKINDEX.d4f262b4.tar.gz: No such file or directory
ERROR: unsatisfiable constraints:
  bash (missing):
    required by: world[bash]
  curl (missing):
    required by: world[curl]
The command '/bin/sh -c apk add --update curl bash &&     rm -rf /var/cache/apk/*' returned a non-zero code: 2

因为初次使用docker,开始也不知道具体发生了什么问题,因为上面的地址和链接在本地都是可以访问的,所以猜测是docker容器不能访问外网,但是同样的Dockerfile在笔者本地环境是没有问题的,在ECS上又试了ubuntu的最新镜像启动的容器,同样是无法访问外网。
查阅一些资料后,得知如果是启动容器无法访问外网,docker run 的时候可以添加 –net=host 可以使容器使用宿主机的网络访问外网,但现在是要生成镜像docker build。
经过一番google,最后总结如下解决方案(已解决笔者遇到的问题)

在宿主机中,进行如下操作:

一、 查看宿主机的nameserver

> cat /etc/resolv.conf
domain mycompany
search mycompany
nameserver xxx.xxx.xxx.xxx

二、 创建或修改 /etc/default/docker,在其中添加或编辑如下选项

DOCKER_OPTS="--dns xxx.xxx.xxx.xxx"

三、 重启 docker

systemctl restart docker 

然后重新执行 docker build 全部通过

参考1
参考2

    原文作者:bozz
    原文地址: https://segmentfault.com/a/1190000010261378
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞