映射码头码头端口失败 [英] Mapping docker port is failed
问题描述
FROM rm / node:9.0(使用centos7创建的docker文件)
EXPOSE 3000
WORKDIR / Reader_Manager / SISPlatform / Auth
运行npm安装
WORKDIR / Reader_Manager / SISPlatform / Auth / portal
CMD npm run-script dev-server-linux
npm run-script dev-server-linux将会在package.json文件中定义的invoke below命令
dev-server-linux:export NODE_ENV = development& amp ; 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',
当我试图运行在后台运行的Docker图像。
docker run -d rm / node:10.0
08633576828fe33ba880c7b6a40dd9306c885d24ce36a765a459f5acc8e91808
非常不鼓励使用环回设备生产使用。使用`--storage-opt dm.thinpooldev`或使用`--storage-opt dm.no_warn_on_loop_devices = true`来抑制这个警告。
docker ps
CONTAINER ID图像命令创建状态端口名称
08633576828f rm / node:10.0/ bin / sh -c'npm run-关于分钟前Up约一分钟3000 / tcp nostalgic_gates
由于我在容器内部运行nodejs, 3000端口。所以我试图映射3000端口,但它失败了错误。
[dkanagaraj @ localhost docker_test] $ docker run -p 3000:3000 -d rm / node:10.0
3160c27cd2ee964474d137024c1f392dafe5242874842b5f5cdf28a4dfb27e51
来自守护程序的错误响应:无法启动容器3160c27cd2ee964474d137024c1f392dafe5242874842b5f5cdf28a4dfb27e51:无法在网桥上创建端点big_wing:COMMAND_FAILED:'/ sbin / iptables -w2 -t nat -A DOCKER -p tcp -d 0/0 --dport 3000 -j DNAT - 目的地172.17.0.3:3000! -i docker0'failed:iptables:没有链/目标/匹配的名称。
系统中的某些东西已经删除了docker iptables条目它需要工作。有两个修正建议 here :
对于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#你可能需要sudo -s来获取root shell首先
重新启动docker后,您应该看到nat表下的docker链:
iptables -t nat -vL
Created new docker image(rm/node:10.0) with centos7 using below dockerfile.
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" will invoke below command which defined in package.json file
"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'",
When i tried to run created docker image in background it is running.
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
As i am running nodejs inside the container, exposed the 3000 port. So i tried to map 3000 port, but it is failed with error.
[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.
Something on your system has removed the docker iptables entries that it needs to work. Two fixes have been suggested here:
For CentOS:
sudo service docker restart
sudo service iptables save
And for 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
After the restart of docker, you should see the docker chain under the nat table:
iptables -t nat -vL
这篇关于映射码头码头端口失败的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!