Как узнать версию докера linux

Обновлено: 02.07.2024

Я новичок в докере, и это просто увлекательный инструмент. Однако я ничего не могу понять в этом. Простой файл Dockerfile обычно начинается с имени и версии ОС, например:

Но какая ОС Linux будет использоваться для Dockerfile, например

Конечно, я могу узнать это, запустив контейнер из этого образа и распечатав информацию об ОС, например:

Кстати, в обоих случаях ОС - «Debian GNU / Linux 10 (buster)».

Итак, мои вопросы:

Как узнать, какая ОС будет запускаться для определенного образа докера, не создавая из него контейнер докера (команда docker inspect не предоставляет эту информацию: docker inspect perl | grep -i Debian )

Как изменить тип ОС для существующего образа докера. Например, у меня есть образ, в котором используется Ubuntu 14.04, и я хочу изменить его на Ubuntu 18.04 ..

Спасибо за помощь:)

2 ответа

Образ докера не требует ОС. Существует возможность расширения рабочего образа, который намеренно пуст, а контейнер может содержать только один двоичный файл. или какой-то объем.

Наличие всей ОС возможно, но также вводит в заблуждение: хост разделяет свое ядро с контейнером. (Это не виртуальная машина.)

Это означает, что независимо от того, какую «ОС» вы используете, в контейнере находится одно и то же ядро:

Сообщит о том же ядре вашей хост-машины.

Поэтому вам нужно изучить разные способы:

Или для Cent OS:

Вместо царапин, многие изображения также сделаны в альпийском стиле, чтобы избежать лишнего размера. Базовый образ ubuntu может легко иметь отпечаток 500 МБ, тогда как alpine использует около 5 МБ; так что я лучше проверю и это.

Также избегайте ловушки ручной установки всего на один образ Ubuntu внутри одного большого Dockerfile. Docker работает лучше всего, если каждая служба представляет собой отдельный контейнер, который вы связываете вместе. (Для этого проверьте docker-compose .)

В конце концов, вы, как пользователь, должны заботиться не об ОС образа, а о его размере. Только как разработчик Dockerfile имеет значение знать ОС, и вы узнаете об этом, заглянув в Dockerfile, где был создан образ (если он находится в концентраторе Docker, вы можете прочитать его там).

По сути, вам нужно посмотреть, что было использовано для создания вашего изображения, и использовать соответствующие инструменты для работы. (В образах на основе Debian используется apt-get , в alpine используется apk , а в Fedora используется yum .)

Как узнать, какая ОС будет запускаться для определенного образа докера, не создавая из него контейнер докера

Единственный способ определить, какая операционная система используется, - это, как вы описали: создать контейнер и распечатать информацию об операционной системе. Нет метаданных, которые говорят, что «это изображение было создано с использованием <x> ».

Во многих (но не во всех) ситуациях эта информация может быть не особенно важной.

Как изменить тип ОС для существующего образа докера. Например, у меня есть образ, в котором используется Ubuntu 14.04, и я хочу изменить его на Ubuntu 18.04 ..

Если у вас есть доступ к Dockerfile , используемому для создания образа, вы, конечно, можете изменить базовое изображение (изображение, указанное в строке FROM ) и построить новый, но вы можете обнаружить, что это требует ряда других изменений из-за разных версий программного обеспечения в обновленном образе.


Docker Container – технология, которая позволяет автоматизировать процесс развертывания и управления приложениями в среде виртуализации на уровне операционной системы. В основном Docker-контейнеры используются для СI/CD cистем.

В статье рассмотрим 20 самых часто используемых Docker команд на примере Linux-систем.

1.Проверка версии Docker

Прежде, чем приступать к работе, необходимо знать, какая версия Docker используется. Для этого достаточно ввести

2.Получение информации об инсталляции

Также важно знать основную информацию об инсталляции, что можно сделать с помощью команды « docker info»

docker-info-command-output

3. Поиск Docker образов (images) на сервере регистра

Используя команду «docker search», можно запустить поиск Docker образов на сервере регистра с терминала. Предположим, необходимо найти последние Docker образы Debian.

Вывод должен выглядеть примерно так

docker-search-command-linux-1024x408

4. Скачивание образов Docker-контейнеров

С помощью команды docker pull можно загружать образы Docker-контейнера с сервера регистра или репозитория.

Команда docker pull всегда загружает последнюю версию образа, но есть возможность указать конкретный образ. Например, необходимо загрузить последнюю версию Debian Docker image

Загрузка конкретной версии ОС образа Docker-контейнера

Если, к примеру, мы хотим скачать образ Docker-контейнера для Ubuntu 14.04.

5. Список всех загруженных образов Docker-контейнера

Всякий раз, когда мы загружаем образы докеров с помощью команды «docker pull», сохраняются локальные образы докеров (/var/lib/docker) на Docker сервере. Можно также перечислить все загруженные образы докеров с помощью команды «docker images»,

6. Запуск Docker-контейнера

Контейнеры запускаются с помощью команды «docker run». Например, мы хотим запустить контейнер с образом Debian.

Эта команда запускает контейнер с именем «debian_container1», далее нужно установить pat rule таким образом, что если какой-либо запрос приходит к 9000 порту на хосте docker, то он будет перенаправлен на контейнер debian на 80-порту. Мы получаем консоль сразу после выполнения команды. Чтобы остановить/закрыть контейнер, нужно ввести exit либо «ctrl + p + q» (закрывает контейнер без выхода).

7. Запуск контейнера в режиме демона

Мы можем запустить контейнер в режиме отсоединения с помощью опции -d в команде «docker run». Пример показан ниже

8. Получение контейнерной консоли с ‘docker attach’

В приведенном выше примере у нас есть контейнер в режиме демона, мы можем использовать его консоль с помощью команды «docker attach».

9. Список контейнеров по команде «docker ps»

Чтобы перечислить все запущенные контейнеры, необходимо помощью ввести команду «docker ps».

docker-ps-command-linux-1024x256

Для перечисления всех контейнеров используется команда «docker ps -a».

10. Запуск, остановка, перезагрузка и уничтожение контейнеров

Как и виртуальные машины, мы можем запускать, останавливать и перезапускать Docker-контейнеры.

Для остановки запущенного контейнера используется команда

Для запуска контейнера необходимо ввести

Команда, которая используется для перезапуска контейнера

Мы также можем уничтожить процесс Docker-контейнера

11. Удалить/переместить Docker-контейнер

Команда «docker rm» используется для перемещения или удаления контейнера. Работает только тогда, когда Docker остановлен / выключен.

12. Удаление/перемещение образов Docker-контейнера

В приведенной выше команде вместо названия образа можно использовать его id.

13. Сохранить и загрузить образ контейнера Docker в/из файла tar

Предположим, что мы сделали некоторые изменения в debian-образе и хотим экспортировать его как tar-файл. Это можно сделать с помощью команды «docker save».

14. Экспорт и импорт контейнера в/из tar-архива

Контейнер можно экспортировать в файл tar с помощью команды «docker export». Синтаксис показан ниже

Например, необходимо экспортировать web_container в tar-файл.

Команда «docker import» используется для импорта контейнера из файла tar

15. Отображение истории образа Docker-контейнера

Используя команду «docker history», можно посмотреть, какие команды выполнялись при построении образа Docker-контейнера, как на примере, показанном ниже.

16. Извлечение журналов из контейнера

Можно извлекать журналы из контейнеров без входа в систему, используя команду «docker logs»

Синтаксис: docker logs

17. Статистика использования ресурсов Docker-контейнера

Для отображения ресурсов центрального процессора, памяти и сетевого ввода-вывода всех контейнеров применяется команда «docker stats»

docker-stats-command-output-linux-1024x285

18. Вывод IP-адреса контейнера

Информация о низкоуровневом контейнере отображается с помощью команды «docker inspect». Мы можем получить IP-адрес контейнера из вывода команды. Пример показан ниже.

19. Создание образов Docker-контейнеров с помощью Dockerfile

Команда «docker build» позволяет создать образ контейнера с помощью DockerFile.

20. Задать тег/название для образа Docker-контейнера

Команда «docker tag» используется для установки тега или названия образа Docker-контейнера в репозитории.

Теперь образ контейнера имеет название

docker-tag-linux

Подробно об использовании и настройке Docker изучайте на нашем курсе « Администрирование Docker»!


Контейнеры Docker преобразовались из нишевой технологии в обязательный атрибут наших сред разработки. Иногда нам приходится тратить невероятное количество времени на отладку или борьбу с самим инструментом, от которого изначально ожидается прирост продуктивности. С каждой же новой волной технологий приходится осваивать великое множество происходящих изменений.

Наверняка многие из вас проводили по одному-два дня, пыт а ясь настроить кластер Docker или получая часть кода, которая продолжает проваливать загрузку контейнера Docker. Большинство разработчиков много времени затрачивают именно на конфигурирование — поиск багов становится делом, которое, как начинает казаться, перевешивает временные затраты на саму разработку нового функционала. Это особенно актуально, когда вы работаете в новой среде или среде, которая ещё не достигла своей “зрелости”.

Менее удачливые из нас не имеют стабильных сред с идеальными CI/CD процессами. Эта статья как раз для тех, кто попадает в эту категорию. Содержащаяся в ней информация взята из реального опыта. Как и вы, я проводил за отладкой дни напролёт. Эта же статья является своеобразным дополнением основного сайта технической документации Docker. В то же время она заостряет внимание на самых распространённых командах, которые вы будете использовать ежедневно в процессе работы с Docker.

Более подробный список опциональных флагов и аргументов вы можете найти в руководстве к Docker. Обязательно учтите, что в зависимости от конфигурации вашей системы Docker, может потребоваться предварять каждую команду docker префиксом sudo .

Совет: каждая команда Docker имеет встроенную документацию, которую вам необходимо научится использовать. Напечатав docker run --help , вы увидите следующую вспомогательную документацию:


Надеюсь, что это руководство поможет вам ориентироваться в сложном процессе отладки и работы с Docker. Обращайте внимание на сопроводительные пояснения к командам при их прочтении.

Это создаст образ Docker с опциональными аргументами сборки. Docker будет по умолчанию кэшировать результаты для первой сборки Dockerfile или последующих сборок, основанных на слоях, добавленных к образу через команду run в Dockerfile, что позволит этим сборкам работать быстрее. Если вам это не нужно, можете добавить аргумент “no-cache”, как это сделано в примере выше.

Заметка: команды Docker могут быть выполнены по имени или по ID контейнера. <CONTAINER> допускает подстановку либо ID контейнера, либо его имени.

Запуск существующего контейнера. Здесь мы предполагаем, что он уже был загружен и создан.

Остановка существующего контейнера Docker.

Если у вас есть несколько запущенных контейнеров Docker, и вы хотите остановить их все, наберите docker stop и список ID этих контейнеров.

Выполнение команды оболочки внутри конкретного контейнера.

Существует чёткое различие между Docker run и start . run по сути делает две вещи: 1) создаёт новый контейнер образа и 2) выполняет этот контейнер. Если вам когда-нибудь понадобится повторно запустить давший сбой или совершивших выход контейнер, используйте команду docker start .

Это интересная команда, предназначенная для единовременного создания и запуска контейнера. Она также запускает команду внутри него и затем, после выполнения этой команды, удаляет контейнер.

Если вы хотите запустить команду docker run в отдельном состоянии — например, в качестве демона (фоновый процесс) в Linux, то можете добавить -d к этой команде(ам) run .

Приостановить все запущенные процессы внутри конкретного контейнера.

Эта команды выводит список всех образов Docker, запущенных ранее. Как только вы определили образ, который нужно запустить, выполните команду, приведённую ниже. Убедитесь, что изменили ID контейнера, чтобы он отображал результаты, показанные изначальной командой docker ps -a .

Эта команда демонстрирует, как запускать образ Docker со множеством переменных среды, переданных в виде аргументов. Знак \ здесь выступает в качестве прерывателя строки.

Если вам когда-нибудь придётся раскрывать порты Docker, то имейте в виду, что для проброса портов команда запуска получает аргумент -p . Там, где host_public_port — это порт вашей машины, вам нужно, чтобы Docker переадресовал container_port . Для дополнительных портов также добавляйте аргументы -p .

Используйте docker ps , чтобы получать имена существующих контейнеров, запущенных в данный момент.

Отображает историю конкретного образа. Эта информация полезна, когда вы хотите узнать детали и получить подробное представление о том, как появился образ Docker. Давайте здесь немного отвлечёмся, т.к. это необходимо для полноценного понимания действий указанной команды. Сама же документация по ней весьма скудная.

В случае с Docker образы создаются на верхушках слоёв, которые являются строительными элементами этих образов. Каждый контейнер состоит из образа с читаемым/записываемым слоем, который вы можете рассматривать как постоянное состояние или файл. Помимо этого, добавляются и другие слои, доступные только для чтения. Эти слои (также называемые промежуточными образами) генерируются, когда при выполнении команды build образа Docker выполняются команды в Dockerfile.

Если у вас есть директива from , run и/или copy в Dockerfile и затем вы build этот образ, то благодаря этой директиве run будет создан один слой со своим собственным ID образа. Этот образ/слой затем покажется в docker history с этим ID образа и датой его создания. Последующие директивы продолжат генерацию аналогичных записей. При этом колонка CREATED BY будет приблизительно соответствовать строке в Dockerfile, как это показано на следующем изображении:


Список всех образов, хранящихся в данный момент на машине.

Docker inspect отображает низкоуровневую информацию о конкретном объекте Docker. Данные, хранящиеся в этом объекте, могут оказаться весьма полезны при отладке, например при перекрёстной проверке точек монтирования Docker.

Обратите внимание, что есть два основных ответа, получаемых этой командой — детали уровня образа и детали уровня контейнера. Вот кое-что из того, что вы можете получить с помощью этой команды:

  • ID контейнера и временную метку его создания.
  • Текущий статус (полезен при выяснении, остановлен ли контейнер и, если остановлен, то почему).
  • Информация образа Docker, информация о привязках к файловой системе и томе, а также о подключениях.
  • Переменные среды — например, параметры командной строки, переданные в контейнер.
  • Конфигурация сети: IP адрес и шлюз, а также второстепенные адреса для IPv4 и IPv6.

Отображение версии Docker, включая версию клиента и сервера, установленные на машине в данный момент.

Да, вы всё правильно поняли. Docker — это клиент-серверное приложение. Демон (продолжительно выполняемая фоновая служба Linux) — это сервер, а CLI — это один из многих клиентов. Демон Docker раскрывает REST API, посредством которого с ним могут взаимодействовать различные инструменты.


Бывают случаи, когда вам нужно войти в запущенный контейнер Docker для отладки или перекрёстной проверки правильности конфигурации.

Честно говоря, причиной тому может быть многое, включая: 1) проблемы кода, например, было выброшено не перехваченное исключение, и контейнер Docker не запустился, 2) вам не хватает пространства на жёстком диске, если вы используете кластер ECS в экземплярах EC2 и при этом для размещения ECS не используете Fargate, 3) ваш действующий контейнер Docker исчерпал доступную EC2 память.

Выполните приведённую ниже команду, чтобы выявить последний проваливший запуск контейнер. Опустите sudo , если у вас есть доступ sudo в аккаунте. Получив в ответ данные, используйте их для повторного запуска контейнера и определения причины провала.

Здесь пояснения не требуются.

Docker для очистки неиспользуемых объектов вроде образов, контейнеров, томов и сетей, применяет консервативный подход.

Эти объекты, как правило, не удаляются, пока вы явно не попросите об этом Docker. Поэтому, если эти объекты не удалить, то вскоре они начнут занимать много места. В связи с этим очень важно периодически выполнять нижеприведённую команду для очистки неиспользуемых образов.

Убить выполняющийся контейнер.

Убить все выполняющиеся контейнеры.

Удалить конкретный контейнер, не запущенный в данный момент. Если образ существует в удалённом реестре, он не будет затронут.

Удалить все контейнеры, незапущенные в данный момент.

Получить доступ к журналам контейнера (полезно при отладке).

Docker Hub — это служба Docker для нахождения и совместного использования образов контейнеров.

Если вы хотите извлечь оттуда образы для локального реестра, то это так же просто, как выполнение команды run , сопровождаемой путём образа. Нижеприведённая команда демонстрирует извлечение и запуск стабильной версии образа R Rocker.

Docker сперва проверит, доступен ли этот образ на вашей локальной машине. Если нет, он приступит к его загрузке с репозитория Docker Hub. Такое поведение предусмотрено изначально.

Если вы хотите просто извлечь образ и не запускать контейнер, тогда подойдёт команда docker pull .

Для входа на Docker Hub вы можете запустить вышеприведённую команду, которая предложит ввести пароль.

Если вы извлекаете образ из обобщённого пользовательского реестра Docker, требующего авторизацию, то команда docker login позволят произвести извлечение из любого реестра Docker, как показано выше. Имейте в виду, что при использовании приведённого подхода, будет создана запись в файле

/.docker/config.json для изменения деталей авторизации.

Реестр Elastic-контейнеров (ECS) — это полноценно поддерживаемый реестр контейнеров Docker, позволяющий разработчикам хранить, поддерживать и разворачивать образы контейнеров Docker. Amazon ECS отлично работает с Amazon ECR. Если вам вдруг понадобится извлечь образы из реестра ECR, следуйте следующим инструкциям.

Вам нужно настроить AWS CLI так, чтобы пользователь IAM имел доступ к AWS и секретный ключ.

Amazon ECR требует, чтобы ключи пользователя IAM имели разрешения ( ecr:GetAuthrizationToken ) через политику IAM, только тогда вы сможете авторизоваться и извлечь образы. В качестве альтернативы вы можете использовать утилиту Amazon ECR Docker Credential Helper. Ниже представлен подход, предполагающий использование вами AWS CLI и корректную настройку всех разрешений.

Команда get-login генерирует длинную команду входа Docker. Скопируйте её и выполните. Авторизация необходима, чтобы получить возможность извлекать образы из AWS ECR.

Если вам понадобится экспортировать образ Docker на диск и загрузить обратно, вышеуказанная команда это осуществит.

Экспортирование в файл полезно для случаев, когда вам нужно переместить образы с одной машины на следующую через альтернативного посредника (не через реестр Docker). Существует несколько сред, имеющих запрет доступа в связи с их политикой безопасности. Это может помешать вам произвести миграцию между реестрами, поэтому приведённая команда весьма полезна, хотя зачастую несправедливо недооценена.

Docker Cheat Sheet

Want to improve this cheat sheet? See the Contributing section!

"С Docker разработчики могут создавать любое приложение на любом языке, используя любую инструментальную цепочку. Приложения помещаются в контейнер - становятся полностью переносимы и могут работать где угодно - на компьютерах под управлением OS X и Windows, серверах QA, работающих под управлением Ubuntu в облаке, и виртуальных машинах производственного центра обработки данных Red Hat.

Разработчики могут быстро начать работу, начиная с одного из 13 000 приложений, доступных на Docker Hub. Docker управляет и отслеживает изменения и зависимости, что облегчает для системных администраторов понимание того, как работают приложения, созданные разработчиками. И с Docker Hub разработчики могут автоматизировать свой процес сборки и совместно использовать артефакты с сотрудниками через публичные или частные репозитории.

Docker помогает разработчикам создавать и отправлять более качественные приложения быстрее " -- Что такое Docker

Я использую Oh My Zsh вместе с Docker plugin для автозаполнения команд docker. Возможно у вас другой подход.

10.8 “Mountain Lion” или более новый.

Быстрый и простой скрипт установки, предоставляемый Docker:

Если вы не хотите запускать случайный сценарий оболочки, см. Инструкции по установке на ваш дистрибутив.

Если вы являетесь полноправным новичком Docker, вы должны следовать сериям учебников сейчас.

После установки Docker Community Edition щелкните значок докера. Затем запустите контейнер:

Вот и все, у вас есть работающий контейнер Docker.

Ваш основной изолированный процесс Докера. Контейнеры - это виртуальные машины, поскольку потоки относятся к процессам. Или вы можете думать о них как о chroot на стероидах.

    создает контейнер, но не запускает его. позволяет переименовать контейнер. создает и запускает контейнер за одну операцию. удаляет контейнер. обновляет ограничения ресурсов контейнера.

Обычно, если вы запускаете контейнер без параметров, он запускается и останавливается немедленно, если вы хотите его запустить, вы можете использовать команду, docker run -td container_id это будет использовать опцию -t который будет выделять псевдо-TTY сессию и -d который автоматически отсоединяет контейнер (запускает контейнер в фоновом режиме и показыват ID контейнера).

Если вам нужен переходный контейнер, docker run --rm удалит контейнер после его остановки.

Если вы хотите сопоставить каталог на хосте с контейнером докера, docker run -v $HOSTDIR:$DOCKERDIR . Также смотрите Тома.

Если вы хотите удалить также тома, связанные с контейнером, удаление контейнера должно включать -v измените примерно так docker rm -v .

Существует также логирование доступны для отдельных контейнеров в докерах 1.10. Чтобы запустить докер с помощью специального лог журнала (например, в syslog), используйте docker run --log-driver=syslog .

Другим полезным вариантом является docker run --name yourname docker_image потому что, когда вы укажете --name внутри команды run это позволит вам запускать и останавливать контейнер, вызывая его с именем, которое вы указали при его создании.

Запуск и остановка

    запускает контейнер, чтобы он работал. останавливает запущенный контейнер. останавливается и запускает контейнер. приостанавливает работу контейнера, "замораживает" его на месте. снимает "заморозку" контейнера. блокирует до остановки контейнера. посылает SIGKILL к запущеннному контейнеру. будет подключаться к работающему контейнеру.

Если вы хотите интегрировать контейнер с диспетчером хостов, запустите демона с помощью -r = false , а затем используйте docker start -a .

Если вы хотите открыть порты контейнера через хост, см. Раздел раскрытие портов.

Перезагрузка политик в разбитых экземплярах докеров рассматривается здесь.

Вы можете ограничить процессор, используя либо процент от всех процессоров, либо используя определенные ядра.

Вы также можете установить ограничения памяти на Docker:

Чтобы подключить файловую систему на основе FUSE, вам необходимо объединить оба --cap-add и --device:

Обеспечить доступ к одному устройству:

Обеспечить доступ ко всем устройствам:

подробнее о привилегированных контейнерах здесь

    показывает запущенные контейнеры. получает журналы из контейнера. (Вы можете использовать собственный драйвер журнала, но журналы доступны только для json-file и journald в 1.10). просматривает всю информацию о контейнере (включая IP-адрес). получает события из контейнера. показывает открытый порт контейнера. показывает запущенные процессы в контейнере. показывает статистику использования ресурсов контейнеров. показывает измененные файлы в FS контейнера.

docker ps -a показывает запущенные и остановленные контейнеры.

docker stats --all показывает текущий список контейнеров.

    копирует файлы или папки между контейнером и локальной файловой системой. экспортировать файловую систему контейнера в качестве tar-архива.

Чтобы войти в запущенный контейнер, присоедините новый процесс оболочки к запущенному контейнеру с именем foo, используйте: docker exec -it foo /bin/bash .

    показывает все образы. создает образ из архива. создает образ из Dockerfile. создает образ из контейнера, временно приостанавливая его, если он запущен. удаляет образ. загружает образ из архива tar в качестве STDIN, включая образы и теги (начиная с 0.7). сохраняет образ в поток архива tar в STDOUT со всеми родительскими слоями, тегами и версиями (начиная с 0,7).
    показывает историю образа. теги образа к имени (локальному или реестру).

Проверка версии Docker

Очень важно, чтобы вы всегда знали текущую версию Docker, в которой вы сейчас работаете, в любой момент времени. Это очень полезно, потому что вы узнаете, какие функции совместимы с тем, что вы используете. Это также важно, потому что вы знаете, какие контейнеры запускать из хранилища докеров, когда вы пытаетесь получить контейнеры шаблонов. Это говорит о том, как узнать, какая версия докера у нас работает в настоящее время:

    проверьте, какая версия докера у вас запущена.
  • [docker version [OPTIONS]]

Получить версию сервера $ docker version --format '>'

1.8.0 Dump raw JSON data $ docker version --format '>'

Хотя вы можете использовать команду docker rmi для удаления определенных образов, есть инструмент под названием docker-gc, который будет безопасно очищать образы, которые больше не используются любыми контейнерами.

Читайте также: