А как задать ip адрес принудительно контейнеру?
А то они их произвольно получают 172.17.0.*, в хостах прописать явно же надо? Или я чего-то не понимаю?
docker run -ip xx.xx.xx.xx
ругается
@AlexB, потому что ты не понимаешь самой банальной вещи что такое entrypoint & cmd.
Смотри
Контейнер выполняет всегда вот такую конструкцию:
$ENTRYPOINT $CMD
Если ты запускаешь docker run и чтото потом пишешь (например /bin/bash), то тем самым ты переопределяешь определенную в Dockerfile CMD конструкцию.
Смотри что у нас получается в итоге
Если в dockerfile есть
ENTRYPOINT /bin/echo
CMD Fuck, yeah! It is from Dockerfile!
И ты сделаешь просто
docker run mycontainer
то оно выведет "Fuck, yeah! Is is from Dockerfile!".
Если ты запустишь
docker run oh now, what a fuck!
То оно выведет "oh now, what a fuck!" соответственно.
Если бы у тебя не было Entrypoint то в обоих случаях ты бы получил "command or file not found error".
Ну и соответственно ты можешь entrypoint переопределить в docker run с помощью параметра "--entrypoint string Overwrite the default ENTRYPOINT of the image" (see docker run --help).
Удобно это тогда когда у тебя есть какой то универсальный сервис типа django manage.py, который принимает некоторые параметры и ты можешь сделать "ENTRYPOINT python manage.py" и ебошить дальше в виде "docker run $containerName$ syncdb" и это будет приаппенджено в manage.py :)
Сенькс, вроде осмыслил про переопределение, но вопрос остался. Если я явно не передаю команду:
docker run -i -t se/backend
Таки поведение не меняется, пока не дописал
&& bash
контейнер не запускается, точнее говоря он запускается, команда выполняется и тут же завершается работа
becker@lenovo ~/projects/production/toolbox/docker/backend $ docker history se/backend
IMAGE CREATED CREATED BY SIZE COMMENT
173e87fed23e About a minute ago /bin/sh -c #(nop) EXPOSE 80/tcp 0 B
4de4fd3745a7 About a minute ago /bin/sh -c #(nop) ENTRYPOINT &{["/bin/sh" "-c 0 B
2cea461abacf 5 hours ago /bin/sh -c #(nop) ADD dir:3dc13dbf33eb65bcafa 7.734 kB
f4f0bd9eb4ab 10 hours ago /bin/sh -c #(nop) WORKDIR /projects/ 0 B
@AlexB, я так понимаю что тебе нужен nginx в foreground режиме, это можно сделать не так убого как ты сделал )))))
Вот так это делается
nginx -g "daemon off;"
Спустя 35 сек.
ну и эту команду наверное лучше вписать в CMD, зачем она тебе в entrypoint? может ты еще чтото захочешь в контейнере запускать, переопределять CMD зачастую удобнее
Не мне просто нужно, чтобы при запуске контейнера демон нжинкса сам стартовал
@AlexB, тебе это нужно не в 100% случаев, I am sure :)
а если ты думаешь иначе то ты еще не до конца понял как работают с контейнерами )))
Спустя 61 сек.
контейнер это не exe файл, это архив в котором может быть исполняемый файл, а можно запускать что хочешь. я уже давно не практикю контейнер под задачу, обычно один контейнер выполняет больше 1 задачи, а конфигурированием задач всей системы занимается docker-compose
Спустя 32 сек.
и вот в нем то уже и прописаны настоящие роли того или иного сервиса на основании контейнера. хотя может у тебя хостинг конечно не позволяет переопределять команды и тп, тут тогда да, без вариантов :)