Anton
ваш энтрипойнт, если указан
Nikolay
ваш энтрипойнт, если указан
Это image ? Так пока понял , что docker run создаст cgroup и запустит в нем процесс , бинарник которого в image? А есть какая -то точка входа в imsge? По аналогии с функцией main в консольной программе ?
Anton
image, это грубо говоря тарбол
Anton
когда докер запускает контейнер он помимо прочего монтирует фаловую систему, на которую распаковывает этот тарбол
Anton
если вы указали в ENTRYPOINT какой-то бинарник (который присутствует на этой фс), то он будет запущен первым процессом
Anton
$ cat Dockerfile FROM alpine ENTRYPOINT date $ docker build . -t pp ... Successfully built 09c525578b67 Successfully tagged pp:latest $ docker run --rm pp Sat Apr 27 16:18:03 UTC 2019
Anton
в данном случае "main" это "date"
George
Там все написано
Nikolay
файлы обычно лежат в /var/lib/docker
Спасибо . Поднял контейнер. В нем создал папку. Зашёл в /var/lib/docker/contsiners/нашел там свой , но папки созданной в контейнере там нет. Не там ищу ?
George
папка может быть как /var/lib/docker/volumes
George
так и в каталоге с эфемерной файловой системой - она существует пока контенйнер существует (запущен или остановлен, но не удален)
Nikolay
-it — когда хочешь взаимодействовать с вводом/выводом энтрипойнта контейнера
Спасибо. Много осознал. Раньше вообще непонятно было . Правильно ли ,что -it просто запускает консоль в контейнере ? Т.е он возьмёт создаст группу, подмантирует файловую систему , запустит энтри поинтересоваться и если it то ещё запустит консоль ?
Anton
нет, консоль он не запустит. "консоль" запускается в случае с alpine потому, что entrypoint в этом образе — бинарник sh. Но печатать туда что-то и получать из этого результат можно мотому, что вы передаете туда "-it"
Anton
попробуйте запустить "docker run --rm alpine" (без "-it")
Anton
ничего не произошло и вам сразу вернулось управление, так?
Anton
на самом деле произошло много чего. А именно запустился контейнер в котором запустился sh, т.к. вы не передали "-t", он сразу получил EOF, то есть эквивалентно, как если вы в консоле ctrl+d нажмете. Поэтому sh сразу завершил свое выполнение, а вместе с ним и контейнер.
Anton
теперь попробуйте с "-t" без "i": "docker run --rm -t alpine"
Anton
теперь контейнер не завершает работу, потому что вы "пробросили терминал". sh не получил EOF и продолжает работать. Но что бы вы туда не писали, вы не видите результата, потому что вы не включили интерактивный режим (ключ "i")
Anton
и наконец, когда вы пробрасываете и терминал "t", и включаете интерактивный режим "i": "docker run --rm -it alpine", sh работает с терминалом и вы можете с ним интерактировать
Anton
вернее не пробрасываете терминал, а создаете псевдотерминал
Nikolay
вернее не пробрасываете терминал, а создаете псевдотерминал
Спасибо. Правильно ли понимать , что it - это взаимодействие с потоком stdin в entrypoint?
Anton
Спасибо. Правильно ли понимать , что it - это взаимодействие с потоком stdin в entrypoint?
можно так сказать, но строго говоря за взаимодействие отвечает только "i". "t" создает псевдотерминал. Но ввиду того, что без терминала всеравно ничего не получится, то обычно эти флаги используются в паре
Nikolay
https://pastebin.com/8LLj32eB
А почему папки в image ,а не в контейнере ?я же скачал (сбилдел) image, а запускается контейнер . Ты.е к одному image может быть много контейнеров.
Anton
я думаю потому, что файловая система монтируется _из_ _образа_. Да, контейнеров может быть несколько, поэтому там будет несколько mount-id и несколько папок
Nikolay
Понял.спасибо большое . Благодаря вам все стало намного понятнее .
Anonymous
Всем привет :) только начинаю разбираться с докером и поставил цель залить коровское приложение в докер. Делаю вот поэтому мануалу https://docs.microsoft.com/ru-ru/dotnet/core/docker/build-container но у меня пишет что нет такой директории или файла когда я выполняю команду docker build -t myimage . Мне пишет ошибку Step 2/3 : COPY app/bin/Release/netcoreapp2.2/publish/ app/ COPY failed: stat /var/lib/docker/tmp/docker-builder054582053/app/bin/Release/netcoreapp2.2/publish: no such file or directory я пишу код в visual studio в винде и естественно у меня нет такой директории. Как тут правильно сделать ?
Владислав
Нифига себе. Мануал по докеру на сайте майкрософт. А это вообще законно?
Anonymous
в студии уже можно делать проекты с поддержкой докеров но я не врубаюсь во второй шаг :(
Владислав
второй - это который?
Владислав
А, я понял, то, что ты скопировал. Я думал в статье
Anonymous
ну да , но я не могу врубиться как тут образ то сделать ? Как можно удалить образы ?
Владислав
Ну, наверное, тебе как минимум, обратные слеши надо юзать. Ну и почитать мануалы по докеру
Владислав
Как можно удалить образы ? docker rmi <image_name>
Владислав
https://docs.docker.com/get-started/
Anonymous
да там вообще такого пути нет и быть не может , я же под виндой писал а он мне линуксовой путь пишет
Владислав
внутри докер-контейнера не винда
Владислав
там линукс )
Ильдар
Модель для начала потренироваться в линкксовом окружении на линуксовых кошечках?
Ильдар
Нафиг сразу в винду втыкаться..
Владислав
нафиг в неё в принципе )
Anonymous
аа ясно , блин это проблема . Мне же получается нужно скомпилировать в вижуал студии проект . А потом запихать его в образ ?Я в visual studio проекты делаю на шарпе поэтому мне то как раз это и удобно
Anonymous
там без винды никак
Anonymous
да там классов 20 в проекте может быть , тут без visual studio никак :(
melvin
Но докер на винде и ранится в простенькой линуксовой виртуалке, не?
Ильдар
там без винды никак
Я не говорю вообще её выкинуть. Пока выкинь и научись на чем попроще.
Ильдар
Питон хелло ворлд в докер в виртуалке засунь там.
Ильдар
Anonymous
да это то уже делал, под линуксом работало
melvin
По хорошому надо скопировать файлы и компилять моно/ксамарином
Anonymous
нее тут фишка в net core он может работать под линуксом
Anonymous
я только изза этого заморочился изза нет
Anonymous
гонего*
melvin
Тогда да, накати докер в всл пробрось туда проект и собирай имейдж оттуда
Anonymous
попробую щас по другому чуть сделать когда образ с нуля делаешь он его создает. Щас удалю первоначальный образ и по новой с нуля сделаю его
Anonymous
так вроде все заработало образ он мне создал и я для него создал контейнер . Скажите а как мне его теперь на docker hub залить ? Идея в том что бы потом под линуксом от туда его забрать и запустить ?
Anonymous
An image does not exist locally with the tag: testprof/myimage когда я делаю команду push testprof/myimage скажите что это означает ?
Anonymous
образ с таким названием у меня есть
Anonymous
аа все получилось :)
Anonymous
еше тупой вопрос. Я залил на docker hub свой образ затем на линуксе его получаю , он скачивается. Но я его почему то не вижу через команду ps -a Что я не так делаю ?
Anonymous
эмм аа блин понял спасибо огромное !!
Dmitry
Привет.
Dmitry
Используете ли вы Docker для контейнеризации сервера БД? Не сталкивались ли вы при этом с проблемами?
George
Достаточно?
Anonymous
хмм а если после выполнения команды docker create myimage вроде он его создает но при выполнении комманды ps -a мне выдается только два поля с инфой PID TTY и поле TIME CMD и выполнение docker start image говорит что нет такого контейнера ?
Anonymous
что я не так делаю*