2016-03-03 115 views
0

我使用最新的Docker Toolbox在OS X上运行Docker。无法连接到暴露的Docker端口

Docker version 1.10.2, build c3959b1 
docker-machine version 0.6.0, build e27fb87 
docker-compose version 1.6.0, build d99cad6 

我从以下Dockerfile内置容器中的Java应用程序:

FROM <my internal registry>/java:8 

ENTRYPOINT ["java", "-cp", "/var/app/scheduler/scheduler-jar-with-dependencies.jar", "com.myapp.scheduler.Application"] 

和码头工人,compose.yml:

scheduler: 
    image: <my internal registry>/scheduler 
    command: -Dspring.profiles.active=local -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5050 
    environment: 
    TERM: xterm 
    ports: 
    - "4567:4567" # http port 
    - "5050:5050" # java debug port 
    volumes: 
    - $SCHEDULER_GIT_ROOT/target:/var/app/scheduler 
    - $LOG/scheduler:/var/log/scheduler 

当我打开容器,我可以使用虚拟机IP(192.168.99.100:4567)从浏览器点击http端口。我无法将调试器连接到调试端口,但是,无论通过端口更改端口,我也不能通过telnet访问该端口。 docker ps收益率:

CONTAINER ID  IMAGE            COMMAND     CREATED    STATUS    PORTS           NAMES 
9395e0f20dd5  <my registry>/scheduler   "java -cp /var/app/sc" 7 minutes ago  Up 7 minutes  0.0.0.0:4567->4567/tcp, 0.0.0.0:5050->5050/tcp scheduler_scheduler_1 

任何人都知道为什么我可以连接到一个端口,但不是其他的?

编辑:下面是来自docker inspect命令:

"Path": "java", 
"Args": [ 
    "-cp", 
    "/var/app/scheduler/scheduler-jar-with-dependencies.jar", 
    "com.mlbam.cms.scheduler.Application", 
    "-Dspring.profiles.active=local", 
    "-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5050" 
] 
+0

你可以发布容器的docker inspect吗?我怀疑'命令'需要以可执行形式存在,就像入口点一样。 –

+0

因为进程正在监听您可以连接的一个端口,而没有进程使用其他进程。 – Auzias

回答

1

这种清盘有无关的码头工人,而是用我的方式是运行java命令。调试参数必须在-cp之前:

java -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5050 -cp /var/app/scheduler/scheduler-jar-with-dependencies.jar com.myapp.scheduler.Application 
相关问题