映射docker端口失败

使用下面的dockerfile创build新的docker镜像(rm / node:10.0),使用centos7。

FROM rm/node:9.0 EXPOSE 3000 WORKDIR /Reader_Manager/SISPlatform/Auth RUN npm install WORKDIR /Reader_Manager/SISPlatform/Auth/portal CMD npm run-script dev-server-linux 

“npm run-script dev-server-linux”将调用package.json文件中定义的下面的命令

 "dev-server-linux": "export NODE_ENV=development && pm2 start --no-daemon AuthServer -o ../../logs/pm2/out/auth_out.log -e ../../logs/pm2/err/auth_error.log --log-date-format 'DD-MM-YYYY HH:mm:ss.SSS'", 

当我试图在后台运行创build的docker图像时,它正在运行。

 docker run -d rm/node:10.0 08633576828fe33ba880c7b6a40dd9306c885d24ce36a765a459f5acc8e91808 Usage of loopback devices is strongly discouraged for production use. Either use `--storage-opt dm.thinpooldev` or use `--storage-opt dm.no_warn_on_loop_devices=true` to suppress this warning. docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 08633576828f rm/node:10.0 "/bin/sh -c 'npm run-" About a minute ago Up About a minute 3000/tcp nostalgic_gates 

当我在容器内运行nodejs时,暴露了3000端口。 所以我试图映射3000端口,但它是失败的错误。

 [dkanagaraj@localhost docker_test]$ docker run -p 3000:3000 -d rm/node:10.0 3160c27cd2ee964474d137024c1f392dafe5242874842b5f5cdf28a4dfb27e51 Error response from daemon: Cannot start container 3160c27cd2ee964474d137024c1f392dafe5242874842b5f5cdf28a4dfb27e51: failed to create endpoint big_wing on network bridge: COMMAND_FAILED: '/sbin/iptables -w2 -t nat -A DOCKER -p tcp -d 0/0 --dport 3000 -j DNAT --to-destination 172.17.0.3:3000 ! -i docker0' failed: iptables: No chain/target/match by that name. 

你的系统上的东西已经删除了它需要工作的docker iptables条目。 这里提出了两个修正:

对于CentOS:

 sudo service docker restart sudo service iptables save 

而对于Ubuntu:

 sudo apt-get install iptables-persistent sudo service docker restart iptables-save > /etc/iptables/rules.v4 # you may need to "sudo -s" to get a root shell first 

docker重启后,你应该看到nat表下的docker链:

 iptables -t nat -vL