Я новичок в докере и понимаю, что ядро linux используется совместно с host-os и контейнерами. Но я действительно не понимаю, как глубокий докер эмулирует конкретное распределение Linux. Допустим, у нас есть простой докер файл так:Какие команды определенного дистрибутива Linux доступны в контейнере Docker?
FROM ubuntu:16.10
RUN apt-get install nginx
Это даст мне Docker контейнер с Nginx, установленных в 16.10 среде Ubuntu. Поэтому я должен был бы использовать apt-get в качестве менеджера пакетов по умолчанию для Ubuntu. Но насколько это глубоко? Могу ли я предположить, что типичные команды такого распределения, как lsb_release
, эмулируются, как в полной виртуальной машине с установленной Ubuntu 16.10?
Причина моего вопроса в том, что дистрибутивы Linux различны. Мне нужно знать, какие команды доступны, например, когда я запускаю контейнер с Ubuntu 16.10, как и тот, который указан выше на хосте, где установлен другой дистрибутив (например, Red Hat, CentOS и т. Д.).
Изображение Ubuntu в Docker составляет около 150 МБ. Поэтому я думаю, что не все инструменты включены, как в реальной установке. Но как я могу знать, на каком я могу покинуть их там.
Попробуйте запустить с помощью 'docker run --name myubuntu sleep infinity', а затем' docker exec -it myubuntu lsb_release', если вы получаете версию Ubuntu, это означает, что она работает – user2915097