Как создать изображение с моим новым файлом 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