2014-11-25 63 views
1

我对docker非常陌生,需要将jar文件部署到docker中。所以我实施了“Hellow World”程序并尝试创建容器,如下所示,但在调用它时出现“curl: (56) Recv failure: Connection reset by peer”错误。如何在Docker中使用我的新jar文件创建映像?

请帮助我我一直在为此工作4天。

Dockerfile:

##### Version: 0.0.1 
FROM ubuntu:14.04 

MAINTAINER Siva "[email protected]" 

RUN apt-get update 
#### installing JDK 

RUN apt-get install -y openjdk-7-jdk 

ADD dockertest.jar /usr/share/java/ 

EXPOSE 8089 

生成命令:

sudo docker build -t="img33/img33" . 

启动从图像容器:

sudo docker run -it -p 80 --name imgcon33 img33/img33 

为了参考

[email protected]:~/jardeploy$ sudo docker build -t="img33/img33" . 

Successfully built f602b747548a 

[email protected]:~/jardeploy$ sudo docker run -it -p 80 --name imgcon33 img33/img33 

[email protected]:/# exit 

[email protected]:~/jardeploy$ docker ps -l 

CONTAINER ID  IMAGE    COMMAND    CREATED    STATUS      PORTS    NAMES 
21df09a79175  img33/img33:latest "/bin/bash"   14 seconds ago  Exited (0) 9 seconds ago      imgcon33 

[email protected]:~/jardeploy$ docker start 21df09a79175 

21df09a79175 

[email protected]:~/jardeploy$ docker ps -l 

CONTAINER ID  IMAGE    COMMAND    CREATED    STATUS    PORTS        NAMES 
21df09a79175  img33/img33:latest "/bin/bash"   29 seconds ago  Up 3 seconds  8080/tcp, 0.0.0.0:49231->80/tcp imgcon33 

[email protected]:~/jardeploy$ curl localhost:49231 

curl: (56) Recv failure: Connection reset by peer 

回答

0

您没有为输入连接定义端口,boot2docker将端口80映射到范围为49153到65535的第一个空闲高端口(请参阅如何操作in boot2dockerdocker)。

这里是为我工作(在Windows上,虽然,但相同的一点是OSX),我映射了端口8000的应用程序的设置,请随时更改它:

c:\>boot2docker init 
Virtual machine boot2docker-vm already exists 
c:\>boot2docker up 
Waiting for VM and Docker daemon to start... 
..........ooo 
Started. 
Writing C:\Users\xyz\.boot2docker\certs\boot2docker-vm\ca.pem 
Writing C:\Users\xyz\.boot2docker\certs\boot2docker-vm\cert.pem 
Writing C:\Users\xyz\.boot2docker\certs\boot2docker-vm\key.pem 
Docker client does not run on Windows for now. Please use 
    "boot2docker.exe" ssh 
to SSH into the VM instead. 
c:\>boot2docker ssh -L 0.0.0.0:8000:localhost:8000 
         ##  . 
        ## ## ##  == 
       ## ## ## ##  === 
      /""""""""""""""""\___/ === 
     ~~~ {~~ ~~~~ ~~~ ~~~~ ~~ ~/===- ~~~ 
      \______ o   __/ 
      \ \  __/ 
       \____\______/ 
_     _ ____  _   _ 
| |__ ___ ___ | |_|___ \ __| | ___ ___| | _____ _ __ 
| '_ \/_ \/_ \| __| __)/_` |/ _ \/__| |//_ \ '__| 
| |_) | (_) | (_) | |_/__/ (_| | (_) | (__| < __/ | 
|_.__/ \___/ \___/ \__|_____\__,_|\___/ \___|_|\_\___|_| 
Boot2Docker version 1.3.2, build master : 495c19a - Mon Nov 24 20:40:58 UTC 2014 
Docker version 1.3.2, build 39fa2fa 
[email protected]:~$ docker run -it -p 0.0.0.0:8000:80 --name imgcon33 img33/img33 

这种设置你的应用程序映射这样的: imgcon33(80端口) - >泊坞窗(8000) - > boot2docker(8000) - >本地主机(8000)

如果从boot2docker卷曲运行,那么一个简单的

curl localhost:80 

应该就够了。 但是,如果你要访问的主机容器(承载boot2docker的)应用程序,你必须运行它

curl localhost:8000 
+0

感谢魔杖立即答复...现在我192.168.56.101卷曲尝试: 49318(这里我创建了另一个容器)。但我得到这个错误:卷曲:(7)失败连接到192.168.56.101:49318;拒绝连线 – 2014-12-01 04:19:50

+0

请参阅我更新的答案。我没有看到你如何使用boot2docker创建SSH连接,所以我添加了自己的设置。 – 2014-12-01 15:52:30

+0

谢谢@Magic魔杖。现在我正面临另一个,我在Dokerfile中编写了** CMD [“java”,“-jar”,“dockertest.jar”] **。现在,在每个**码头工开始<容器ID> **后,容器始终退出。如果我编写CMD命令,我不能始终使容器始终处于启用状态。你能帮我吗? – 2014-12-02 04:39:03

相关问题