8080で立ち上げてます。
# docker run -it ubuntu:14.04 \ /bin/bash -c 'trap exit INT; while true; do ( echo "HTTP/1.0 200 Ok"; echo; echo "Hello World" ) | \ nc -l 8080; done'
WEBサーバがポート8080で起動しました。 このターミナルはプロンプトは返ってこないので、Dockerサーバにログインした別のターミナルから、コンテナのIPを確認し、繋いでみます。
# docker ps CONTAINER ID IMAGE COMMAND ec9fcb1b8dee ubuntu:14.04 "/bin/bash -c 'trap e" About a minute ago Up About a minute # docker exec -it ec9fcb1b8dee cat /etc/hosts 127.0.0.1 localhost ::1 localhost ip6-localhost ip6-loopback 172.17.0.8 ec9fcb1b8dee
というわけで繋いでみます
root@photon-machine [ ~ ]# curl 172.17.0.8:8080 Hello World root@photon-machine [ ~ ]#
つながりました。ただこのコンテナは -p オプションで起動していないので、Dockerサーバからは繋がりますが、Dockerをホストしてるのではない、他のサーバからは繋がりません。
$ curl http://[DockerサーバのIP]:8080
これは返りません。
さて、初めのコンテナを、-p つきで起動してみます。
# docker run -it \ -p 38080:8080 \ ubuntu:14.04 \ /bin/bash -c 'trap exit INT; while true; do ( echo "HTTP/1.0 200 Ok"; echo; echo "Hello World" ) | \ nc -l 8080; done'
別のターミナルから先ほどとおなじ手順で。
# docker ps CONTAINER ID IMAGE COMMAND PORTS 88938a296bee ubuntu:14.04 "/bin/bash -c 'trap e" 0.0.0.0:38080->8080/tcp # docker exec -it 88938a296bee cat /etc/hosts 172.17.0.8 88938a296bee
root@photon-machine [ ~ ]# curl 172.17.0.8:8080 Hello World root@photon-machine [ ~ ]#
他のサーバからは、
$ curl http://[DockerサーバのIP]:38080 Hello World $
無事返ってきました。