LINUX.ORG.RU
ФорумAdmin

веб-сервер на Docker, без файла Dockerfile

 


0

2

Здравствуйте! Возможно ли запустить веб-сервер на Docker, без файла Dockerfile

Я делаю так: 1. Скачиваю образ - docker pull ubuntu 2. Захожу в контейнер - docker run -it ubuntu , и а в нем устанавливаю apache 3. Потом пробрасываю порт - sudo docker run -it -d -p 8080:80 ubuntu

просмотр рабочих контейнеров - docker ps выдает:

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 9bd63c190b2f test «/bin/bash» 2 seconds ago Up 1 second 0.0.0.0:8080->80/tcp serene_joliot

По идеи, если перейти в браузере http://localhost:8080/ - должно вывестись дефолтная страничка localhost - apache, но не чего не выводится.

надо внутри докера убунту поставить докер с apache 4 а у ж в нем докер с докером.

Anoxemian ★★★★★
()

2 seconds ago как бы намекает

контейнер в котором ты поставил apache и контейнер в котором пробросил порт - это разные контейнеры. На базе одного и того же образа (ubuntu), но разные.

alpha ★★★★★
()
Последнее исправление: alpha (всего исправлений: 1)
Ответ на: комментарий от alpha

Один и тот же! С чего вы взяли, что они разные? Если разные то как тогда надо. Я в образ ubuntu поставил apache и сохранил образ с названием test. Потом я и пробрасывал порты на этот test

webplus
() автор топика
Ответ на: комментарий от alpha

У меня вывелся большой список контейнеров. Я их удалил все этой командой: docker container prune -f Остался один: CONTAINER ID a860f5284000 IMAGE test PORTS 0.0.0.0:8080->80/tcp

В описание написано, что порт 8080 проброшен. Но по http так и не работает

webplus
() автор топика
Ответ на: комментарий от webplus

curl 0.0.0.0:8080 пишет: curl: (56) Recv failure: Соединение разорвано другой стороной

webplus
() автор топика
Ответ на: комментарий от webplus

у тебя не сеть не работает, а апач в контейнере не запущен. Потому что один контейнер - один процесс, и ты при старте контейнера запускаешь /bin/bash.

alpha ★★★★★
()
Ответ на: комментарий от alpha

Спасибо, вы правы. Зашел в контейнер: docker attach 04e32d81a0c8 и сделал: service apache2 start И в браузере открылась дефолтная страница

webplus
() автор топика
Ответ на: комментарий от webplus

Только так не делают обычно. Тебе в контейнере не нужен апач как сервис, нужен апач как процесс, который пишет логи в stdout и мониторится докером.

Поэтому надо не через attach его запускать изнутри, а при запуске контейнера вместо /bin/bash дергать /usr/bin/apache или как его там, глянь в примерах как люди в нормальных докерфайлах делают строку CMD.

И тогда ты может работать с этим контейнером не залезая в него как в отдельную систему каждый раз.

alpha ★★★★★
()
Последнее исправление: alpha (всего исправлений: 1)
Ответ на: комментарий от anonymous

anonymous - ты что тут из себя строишь? Ты наверно относишься к той категории людей, которая выучила две команды и считаешь что все просто. Я уверен, если у тебя хватит ума углубится в администрирование веб серверов, то ты поймешь, что это не простая работа и требует логики. А так не выЁ пока своими глупыми комментами.

webplus
() автор топика
Ответ на: комментарий от alpha

Когда находишься в контейнере и запускаешь apache ,то в браузере все доступно, но когда просто выходишь из контейнера, то по порту в браузере сразу пропадает. И если сделать docker ps то запущенного контейнера уже там нет. В общем контейнер работает только когда в нем находишься.

webplus
() автор топика

Уже предлагали скачать образ сразу Nginx?

PunkoIvan ★★★★
()
Ответ на: комментарий от webplus

Неправда. Есть сочетание клавиш ctrl+p ctrl+q (два сочетания надо нажать).

А ещё можно подключиться к контейнеру, отключив передачу сигнала ему, тогда там всё будет работать.

PunkoIvan ★★★★
()
Ответ на: комментарий от PunkoIvan

а я exit в контейнере для выхода писал. И у меня он вообще отключался. А я просто хотел выйти из контейнера

webplus
() автор топика

Сударь, вы используете докер абсолютно неправильно.

ugoday ★★★★★
()

без файла Dockerfile

а в нем устанавливаю apache

Какой-то хернёй ты занимаешься.

no-such-file ★★★★★
()
Ответ на: комментарий от webplus

В общем контейнер работает только когда в нем находишься

ты его запускаешь в интерактивном режиме, с -it, поэтому разумеется выход из него с exit - это полная остановка командной строки, а значит и всего контейнера.

Работать с контейнерами надо _не_заходя_ в них.

Например что-то типа

docker run -p 8080:80 test -- /usr/bin/apache2
и получаешь работающий контейнер выполняющий внутри себя команду /usr/bin/apache2.

И он будет работать без захвата командной строки, в фоне. И логи его надо будет смотреть отдельно вызовом команды docker logs

alpha ★★★★★
()
Ответ на: комментарий от alpha

Только так не делают обычно.

Макакам и так сойдёт.

anonymous
()
Ответ на: комментарий от alpha

Создал контейнер на основе файла Dockerfile с содержимым:

FROM ubuntu:latest

RUN apt-get -y update

RUN apt-get -y install apache2

CMD /usr/sbin/apache2ctl -D FOREGROUND
Но после запуска контейнера, я не могу зайти в контейнер, делаю docker attach id_container , но ни чего не пишет и не заходит в него. Но если собрать контейнер на основе файла Dockerfile, но без CMD /usr/sbin/apache2ctl -D FOREGROUND в нем, то в контейнер командой docker attach id_container без проблем захожу

webplus
() автор топика
Ответ на: комментарий от webplus

чтобы зайти в работающий контейнер root-ом, нужно использовать команду:

docker exec -it --user root <id_контейнера> bash 

"--user root" - это на тот случай, если в docker-образе указан другой пользователь.

Это этакий аналог захода на работающий сервер по ssh :)

vinvlad ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.