不能在docker容器中安装npm?

我正在数字海洋服务器的docker平台上部署一个简单的node.js应用程序。

// package.json

{ "name": "docker-centos-hello", "private": true, "version": "0.0.1", "description": "Node.js Hello world app on CentOS using docker", "author": "Daniel Gasienica <daniel@gasienica.ch>", "dependencies": { "express": "3.2.4" } } 

// app.js

 var express = require('express'); var PORT = 3000; var app = express(); app.get('/', function (req, res) { res.send('Hello world\n'); }); app.listen(PORT); console.log('Running on http://localhost:' + PORT); 

// docker文件

 FROM dockerfile/nodejs # Set the working directory WORKDIR /src EXPOSE 3000 CMD ["/bin/bash"] 

docker的基础镜像是dockerfile / nodejs,它构build了一个node.js,我构build了这个镜像:

 docker build -t test1 /home/sizhe/docker/test 

并运行该图像:

 docker run -it -p 8080:3000 -v /home/sizhe/docker/test1:/src test 

通过运行图像,我可以成功地进入容器,应用程序文件都被复制到容器中。 当我尝试命令来安装node.js依赖项:

 npm install 

但是,npm不能下载所有的软件包,出现以下错误:

 Linux 3.13.0-40-generic npm ERR! argv "node" "/usr/local/bin/npm" "install" npm ERR! node v0.10.35 npm ERR! npm v2.1.16 npm ERR! code ENOTFOUND npm ERR! errno ENOTFOUND npm ERR! syscall getaddrinfo npm ERR! network getaddrinfo ENOTFOUND npm ERR! network This is most likely not a problem with npm itself npm ERR! network and is related to network connectivity. npm ERR! network In most cases you are behind a proxy or have bad network settings. npm ERR! network npm ERR! network If you are behind a proxy, please make sure that the npm ERR! network 'proxy' config is set properly. See: 'npm help config' 

确保dns设置正确。 docker服务重启后,我遇到了一些问题。 如果没有帮助,可能需要使用--dns 8.8.8.8开关。

重新启动docker服务:

  • 在systemd体系结构 – sudo systemctl restart docker
  • boot2docker – boot2docker restart
  • docker机 – docker-machine restart <machine_name>

此外,我做了类似的(nodejs图像),但我已经使用了另一个基本的图像,随意使用任何你需要从我的回购 。