Как создать изображение с моим новым файлом JAR в Docker?

Я очень новичок в 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 ответ

Решение

Вы не определили порт для входящих соединений, и boot2docker отображает порт 80 на первый свободный высокочастотный порт в диапазоне от 49153 до 65535 (см. Как это сделать в boot2docker и docker).

Вот настройка, которая работала для меня (хотя для 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) -> docker (8000) -> boot2docker (8000) -> localhost (8000)

Если вы запустите curl из boot2docker, то простой

curl localhost:80

должно быть достаточно. Но если вы хотите получить доступ к вашему приложению из хост-контейнера (тот, в котором находится boot2docker), вы должны запустить его как

curl localhost:8000
Другие вопросы по тегам