Evgeniy
команда в shell формате переопределила entrypoint
Evgeniy
https://docs.docker.com/engine/reference/builder/#exec-form-entrypoint-example
leejoys
ага
Evgeniy
https://docs.docker.com/engine/reference/builder/#understand-how-cmd-and-entrypoint-interact табличка вот эта (ее искал забыл где она в доке)
leejoys
вроде должно же работать
но вот тут написано же, что через команду можно добавлять ключи к энтрипоинту, или я не так понял?
Evgeniy
команды задаются в 2 режимах (shell, exec)
Evgeniy
когда ты задаешь команду в run она задается в shell режиме
Evgeniy
дальше смотри табличку
leejoys
то есть чтобы запустить энтрипоинт с ключом -i мне надо прописать в докерфайл ещё и CMD с любым значением? а без этого не получится?
Evgeniy
тогда когда ты будешь задавать команды в shell моде
Evgeniy
будешь попадать в нижнюю правую часть таблицы
leejoys
а, кажется доходит, со скобками?
Evgeniy
у тебя будет ENTRYPOINT ["csgo"] при запуске ты задашь например test тогда итог будет csgo /bin/sh -c test
leejoys
пересобрал с вот таким энтрипоинтом ENTRYPOINT ["./server"] теперь видит параметры из строки, но видит как-то не так
Evgeniy
что такое ./server это бинарник или твой скрипт ? и как ты теперь запускаешь образ ?
leejoys
leejoys
бинарник
leejoys
ну там не server.go должно быть, а просто server
Evgeniy
FROM alpine ENTRYPOINT ["ping"] CMD ['google.com"] docker build -t magic docker run —rm magic пингуем google.com ctrl+c docker run —rm magic ya.ru пингуем ya.ru
Evgeniy
ping может не быть в alpine но общий смысл я надеюсь передал
leejoys
а, в строке без скобок надо!
leejoys
спасибо, взлетело
leejoys
просто вот тут наоборот было
leejoys
но это, как я понял, для докерфайла так
Evgeniy
в docker run можно задавать команды ТОЛЬКО в shell формате
Evgeniy
когда ты задаешь команду в shell формате она переопределяет все CMD указанное в образе и дальше уже поведение как в табличке
leejoys
да, теперь понял
leejoys
если мне надо два порта прокинуть, это же правильный формат? docker run -p 8080:8080 -p 5432:5432 -it test
Andrey
Для по которому нужно два порта? (Невероятно неочевидный ответ)
Павел
всем привет! имеется Docker Desktop под win 10 при запуске возникает ошибка: [16:36:23.005][IPCClient ][Info ] (ddcf1cc6) 15749f17-GoBackendClient-CSharp C->S BackendAPI GET /ping [16:36:23.006][GoBackendClient ][Warning] HttpOS Client: connection timed out. сталкивался кто-либо с подобным и как лечить? Предложения из гугла типа удаления settings.json и чистки в AppData не помогают
Евгений
В какую группу надо юзера добавить, чтобы он мог пользоваться докером?
Evgeniy
В docker
Evgeniy
Можно посмотреть кому принадлежит сокет и добавить в эту группу
Evgeniy
Ну вот и ответ на твой вопрос что группа докер
maximus
Подключаю prometheus через Docker-compose но в конфигурации указано что он должен собирать метрики с 127.0.0.1:8080/metrics Но он почему-то не видит локально развёрнутый микросервис по адресу 127.0.0.1:8080/metrics Это похоже из за того что композ свою сеть создаёт. Вот только как сделать чтоб прометеус увидел локальный микросервис на mac
Evgeniy
Когда ты в нем прописывает собирать данные с 127.0.0.1 он обращается к себе а не к хвостовой машине
Evgeniy
И у себя ественно там ничего не видит
Evgeniy
Тебе надо в качестве адреса вместо 127.0.0.1 указывать имя контейнера чтобы он обращался к нему
maximus
А если я локально на 127.0.0.1:8080/metrics разворачиваю приложению то их никак подружить не получится? Только если и микросервис в контейнере запускать?
Evgeniy
У тебя прометеус где ?
Evgeniy
В докер или на твоём хосте или на каком то другом хосте?
maximus
Прометеус в docker
maximus
У меня тоже на локалке
Evgeniy
Ты можешь из докер контейнера обратиться к хостовой машине
Evgeniy
Посмотри ifconfig |grep docker
Evgeniy
Там будет ip
Evgeniy
Но лучше все контейнеры что ты хочешь мониторить добавлять в сетку прометеуса
Evgeniy
Тогда он сможет обращаться к эти контейнерам по именам
Evgeniy
И не придется все выносить на хостовую машину
Evgeniy
Для этого придется контейнеру добавлять network с именем прометеус сервиса И ниже указывать что это external сетка
Evgeniy
Тогда он сможет собирать данные с контейнеров
maximus
Посмотри ifconfig |grep docker
Помогло. Спасибо добрый человек. В целом понял про нетворк😉👍
Evgeniy
Ну и для прода посмотри в сторону swarm хотя бы ну или модные кубы
Evgeniy
Очень легко можно тут по эксперементировать
Evgeniy
https://labs.play-with-docker.com/
Eugene1111
привет а почему когда я билдю контейнер мне докер вместо короткого айди выдает sha256:длиннющаястрока ? спасибо
Пётр
привет а почему когда я билдю контейнер мне докер вместо короткого айди выдает sha256:длиннющаястрока ? спасибо
Потому что чтобы увидеть ID вам нужно использовать docker ps -a а то что вы получили это контрольная сумма
Eugene1111
ну я вот курс смотрю и там у чела в конце билда показывается ID
Eugene1111
а у меня почему не показывается?
Eugene1111
я хочу тчобы показывался зачем мне еще вводить лишнюю команду
Eugene1111
версия последняя виндовс
Eugene1111
в смысле докера да и всего остального
Eugene1111
по контрольной сумме тоже можно запустить и тд его но как-то не по феншую же вроде
Eugene1111
так он не показывает айди
Eugene1111
он даже не пишет successfully built
Eugene1111
хотя оно и забилдилось
Eugene1111
на винде что другой аутпут?
Eugene1111
чел в курсе делает на маке хотя там же вроде должен быть везде с линукса аутпут
Eugene1111
хоть где
Lev
по айди как-то не очень интуитивно, запускай просто по имени образа и тегу
Eugene1111
я такого еще не знаю вот именно что не интуитивно а по хэшу так вообще
Eugene1111
почему он не пишет мне айди после билда вопрос
Lev
id – это short-cut на sha256 дайджест для локальной работы
Lev
не пишет, и не пишет, забей)
Lev
ну или не забей и посмотри чендж-лог)