美文网首页
阿里云ECS启动Docker容器无法访问外网

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

作者: 哆啦A梦_ca52 | 来源:发表于2019-11-29 12:37 被阅读0次
    本文重点讲,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 全部通过
    

    相关文章

      网友评论

          本文标题:阿里云ECS启动Docker容器无法访问外网

          本文链接:https://www.haomeiwen.com/subject/ynowwctx.html