我在RHEL 7上使用了docker版本1.10.1,并在使用下面的Dockerfile时获得了npm安装错误。错误: getaddrinfo ENOTFOUND registry.npmjs.org registry.npmjs.org:443。同样的工作与码头1.91在ubuntu 14.04。当我在容器上进行bash并安装inetutils ping时,我注意到我哪里也不能ping。
root@9deb4b274c1e:/home/nodexp#ping 8.8.8.8
PING 8.8.8.8 (8.8.8.8): 56 data bytes
^C--- 8.8.8.8 ping statistics ---
4 packets transmitted, 0 packets received, 100% packet loss那是为什么?我当然可以从RHEL
Dockerfile
FROM node:argon
# Create user nodexp in group nodexp
RUN groupadd -r nodexp \
&& useradd -m -r -g nodexp nodexp
WORKDIR /home/nodexp
# Install app dependencies
COPY package.json /home/nodexp
RUN npm install
# Bundle app source
COPY . /home/nodexp
EXPOSE 3000
CMD [ "npm", "start" ]和package.json
{
"name": "mp",
"version": "0.0.0",
"private": true,
"scripts": {
"start": "node app.js"
},
"dependencies": {
"express": "~4.13.1"
}
}发布于 2016-04-19 13:19:20
用这个命令重新启动docker为我修复了它,但我不知道为什么
sudo service docker restart
发布于 2018-04-20 07:30:20
我基于本文https://development.robinwinslow.uk/2016/06/23/fix-docker-networking-dns修复了这个问题
实际上,您可以在调用registry.npmjs.org时检查DNS是否失败。
为了检查那个东西,我做了这些步骤来使它工作。
第一步
在busybox映像上运行以下命令,我将使用google.com模拟连接请求
>> docker run busybox nslookup google.com
Unable to find image 'busybox:latest' locally
latest: Pulling from library/busybox
f70adabe43c0: Pull complete
Digest: sha256:58ac43b2cc92c687a32c8be6278e50a063579655fe3090125dcb2af0ff9e1a64
Status: Downloaded newer image for busybox:latest
nslookup: can't resolve 'google.com'
Server: 8.8.8.8
Address 1: 8.8.8.8第二步
正如您从步骤1的结果中看到的,我得到了一个错误,无法解析到google.com的连接,如果您有类似的错误,那么就这样做来检查您当前的DNS路由。
>> nmcli dev show | grep 'IP4.DNS'
IP4.DNS[1]: 192.168.2.1该命令公开您的IP4 DNS,在本例中是192.168.2.1,在此步骤中,您已经知道了DNS。
第三步
让我们继续使用busybox容器通过运行
>> docker run --dns 192.168.2.1 busybox nslookup google.com
Server: 192.168.2.1
Address 1: 192.168.2.1 giftcard.dyndns.org
Name: google.com
Address 1: 2404:6800:4003:c03::65
....第四步
如果您的结果类似于步骤3,那么您的问题是对接无法连接,因为docker不知道DNS将被使用,所以我们通过创建daemon.json文件并在/etc/docker/daemon.json中找到它来解决这个问题。这些内容要放进去。
{
"dns": ["192.168.2.1", "8.8.8.8"] // 192.168.2.1 is value of your dns
}第五步
重新启动您的码头服务
>> sudo service docker restart发布于 2019-07-29 06:10:48
我遇到了同样的问题。我的解决办法是将docker build附加到已知的工作和可访问的码头网络。
解决方案
docker network lsdocker build --network=<known working network name>默认情况下,Docker使用默认网络进行生成。手动设置网络,确保网络能够访问internet。
https://stackoverflow.com/questions/35515203
复制相似问题