DockerSwarm内部IPテスト

7946 ワード

1 dockerサービスの作成
docker service create --name web --publish 80:80 --replicas 3 10.128.222.245:5000/nginx

2サービスステータスの表示
docker@manager:~$ docker service ps web 
ID                  NAME                IMAGE                              NODE                DESIRED STATE       CURRENT STATE           ERROR               PORTS
l2tse8a3xf3a        web.1               10.128.222.245:5000/nginx:latest   worker1             Running             Running 6 minutes ago                       
orywlpaw5oo8        web.2               10.128.222.245:5000/nginx:latest   worker2             Running             Running 6 minutes ago                       
xfrtfthr0ueo        web.3               10.128.222.245:5000/nginx:latest   manager             Running             Running 6 minutes ago  

3コンテナ内部ipの表示
docker@manager:~$ docker ps
CONTAINER ID        IMAGE                                      COMMAND                  CREATED             STATUS              PORTS                NAMES
57b20d3c0320        10.128.222.245:5000/nginx:latest           "nginx -g 'daemon ..."   7 minutes ago       Up 7 minutes        80/tcp               web.3.xfrtfthr0ueosa2bsli9hpvw3
1b50dab07f71        10.128.222.245:5000/nginx                  "nginx -g 'daemon ..."   28 minutes ago      Up 28 minutes       0.0.0.0:80->80/tcp   web
33c1b449f4a6        10.128.222.245:5000/eureka-server:latest   "java -Djava.secur..."   33 minutes ago      Up 33 minutes                            eureka-server.1.4hc3n110ciwtisd388yxuk423
docker@manager:~$ docker inspect web.3.xfrtfthr0ueosa2bsli9hpvw3
 "Networks": {
                "ingress": {
                    "IPAMConfig": {
                        "IPv4Address": "192.168.1.16"
                    },
                    *
                    *
                    *
   "NetworkSettings": {
            "Bridge": "",
            "SandboxID": "7e148d81df78986733a57f5f93075f2937f93ad70592091c0b13f5615b9b6e80",
            "HairpinMode": false,
            "LinkLocalIPv6Address": "",
            "LinkLocalIPv6PrefixLen": 0,
            "Ports": {
                "80/tcp": null
            },
docker@manager:~$ docker port web.3.xfrtfthr0ueosa2bsli9hpvw3 
docker@manager:~$ 

ノード上の80ポートはinspectコマンドで表示されますが、docker portではポートマッピングは表示されません.
docker@manager:~$ docker port --help

Usage:	docker port CONTAINER [PRIVATE_PORT[/PROTO]]

List port mappings or a specific mapping for the container

Options:
      --help   Print usage

サービスはデフォルトのoverlayネットワーク(ingress)にパブリッシュされ、このネットワークノード間で通信できますが、コンテナ名は解析できません.カスタムoverlayネットワークサポートコンテナ名をip(Docker DNS)に解析
Containers connected to the default bridge network can communicate with each other by IP address. Docker does not support automatic service discovery on the default bridge network. If you want containers to be able to resolve IP addresses by container name, you should use user-defined networks instead. You can link two containers together using the legacy docker run --link option, but this is not recommended in most cases.
参照リンク:https://docs.docker.com/engine/userguide/networking/#user-defined-networks
結論:Swamサービスはホスト10.128.23.234(235236):80ポートでwebサービスにアクセスでき、クラスタの内部ipでwebサービスにアクセスできない.デフォルトのoverlayネットワークはノード間アクセスをサポートします