2014-11-25 62 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

相關問題