如何在Docker中使用我的新jar文件创建图像?

时间:2014-11-25 11:01:57

标签: boot2docker

我是docker的新手,需要将jar文件部署到docker中。所以我已经实现了“Hellow World”程序并尝试按如下方式创建容器,但是在调用它时出现“curl: (56) Recv failure: Connection reset by peer”错误。

请帮助我,我已经为此工作了4天。

Dockerfile:

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

MAINTAINER Siva "siva@example.com"

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

供参考

docker@boot2docker:~/jardeploy$ sudo docker build -t="img33/img33" .

Successfully built f602b747548a

docker@boot2docker:~/jardeploy$ sudo docker run -it -p 80 --name imgcon33 img33/img33

root@21df09a79175:/# exit

docker@boot2docker:~/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

docker@boot2docker:~/jardeploy$ docker start 21df09a79175

21df09a79175

docker@boot2docker:~/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

docker@boot2docker:~/jardeploy$ curl localhost:49231

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

1 个答案:

答案 0 :(得分:0)

您没有定义用于进行连接的端口,并且boot2docker将端口80映射到范围49153到65535的第一个空闲高端端口(请参阅如何执行in boot2dockerdocker)。 / p>

这是适用于我的设置(虽然在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
docker@boot2docker:~$ docker run -it -p 0.0.0.0:8000:80 --name imgcon33 img33/img33

此设置映射您的应用程序,如下所示: imgcon33(端口80) - &gt; docker(8000) - &gt; boot2docker(8000) - &gt; localhost(8000)

如果你从boot2docker运行curl,那么就是一个简单的

curl localhost:80

应该足够了。 但是,如果要从主机容器(承载boot2docker的容器)访问您的应用程序,则必须将其作为

运行
curl localhost:8000