о работе Docker

ivanov77

Новичок
Приветствую.

Скажите, если host система - ubuntu 16.04 то все образы и контейнеры, которые я буду использовать, должны наследоваться(FROM) от нее?
Как то не сильно с этими версиями понятно где смотреть.
Вот сразу дают команду:
docker run ubuntu echo "Hello World"
Это же latest, т.е. не 16.04 будет.
И с редисами всякими , если просто как redis указывать, в описании к latest указано - FROM debian:stretch-slim. Тут тоже надо выискивать нужные теги или нет?
 

AnrDaemon

Продвинутый новичок
Нет, не обязательно.
Нет, не обязательно.
Да, надо тестировать.
 

AnrDaemon

Продвинутый новичок
Докер - это application контейнеры.
Если тебе нужны full system - это к LXC/LXD.
 

WMix

герр M:)ller
Партнер клуба
@ivanov77, представь, что docker (или лучше контейнер) это виртуальная машина, только она создается по правилам описанными в dockerfile. такое узкое представление отвечает на твой вопрос?
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
в контейнере не может быть OS по определению, это не виртуализация, в контейнере может быть только userland код - библиотеки и приложения
 
Последнее редактирование:

AnrDaemon

Продвинутый новичок
А вот это спорное утверждение :)
Да, неймспейсы - не виртуализация, но это изоляция настолько низкого уровня, что разница практически незаметна.
 

ivanov77

Новичок
в контейнере не может быть OS по определению, это не виртуализация, в контейнере может быть только userland код - библиотеки и приложения
Host OS у меня ubuntu 16, командой docker pull ubuntu скачал latest, и соответственно запустив, в консоли контейнера проверил - cat /etc/lsb-release - пишет что ubuntu 18
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
А вот это спорное утверждение :)
Да, неймспейсы - не виртуализация, но это изоляция настолько низкого уровня, что разница практически незаметна.
Виртуализация как-бы частично выполняется на уровне железа. Прямо в кристаллах CPU и северного моста вшита поддержка маппинга участков памяти, i/o, сетевых карт под каждую виртуалку, и это поддерживается гипервизорами вроде xen, kvm.
А контейнеры - это, условно, маппинг PID, сокрытие внешних процессов, chroot и NAT - и все, даже UID/GID файлов во всех контейнерах одинаковый.
 
Последнее редактирование:

grigori

( ͡° ͜ʖ ͡°)
Команда форума
конечно, не все так просто, но условно можно считать, что в контейнерах процессы работают рядом, при желании могут пользоваться общей /dev/shm, в общей fs, видеть друг друга, и работать в сети без NAT
 

AnrDaemon

Продвинутый новичок
Единственное, что из этого списка не могут делать виртуальные машины, иметь общий /dev/shm.
И, как ты верно заметил, даже контейнерам на это нужно отдельное желание. Которого у нормального сисадмина почему-то не возникает.
Так что я не понимаю эти попытки объявить виртуализацию чем-то кардинально другим. Да, в случае СОВРЕМЕННОЙ виртуализации изоляция происходит на уровне железа (VT-x etc.). Но ещё каких-то 5-7 лет назад этой разницы НЕ БЫ ЛО.
Виртуализация была программная, та же изоляция на уровне драйверов и сервисов.
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
в огороде бузина, а в городе дядька

* какая разница что было в Pentium? Во всех используемых процессорах сейчас есть поддержка виртуализации на уровне железа.
* общей файловой системы у виртуалок нет, файловые дескрипторы, кеш, драйвер - у каждой виртуалки свои,
* между контейнерами можно открыть сокет, сделать хардлинк, а в виртуалку можно только подмонтировать внешнюю файловую систему
* у контейнеров не только общая память, доступен весь IPC - контейнеры могут работать совместно
 

ivanov77

Новичок
Народ, не подскажите, почему docker (работает на убунту в виртуалке), никак не может скачать образы.
Запускаю docker-compose up -d
Он качает, качает, и потом на каком то слое просто останавливается, как на картинке, и никак не докачивает.
Интернет не пропадал, память свободная есть.
 

Вложения

Сверху