В Docker, какая разница между контейнером и изображением?

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

Кто-нибудь может пролить свет?

Ответ 1

Изображение представляет собой упорядоченную коллекцию изменений корневой файловой системы и соответствующие параметры выполнения для использования в среде выполнения контейнера. Изображения доступны только для чтения.

Контейнер представляет собой активную (или неактивную, если она завершена) инстанцирование изображения с сохранением состояния.

Ответ 2

Изображения заморожены неизменными снимками живых контейнеров. Контейнеры запускают (или останавливают) экземпляры некоторого изображения.

Начните с базового изображения под названием "ubuntu". Позвольте запустить bash интерактивно внутри образа ubuntu и создать файл. Мы будем использовать флаги -i и -t, чтобы предоставить нам интерактивную оболочку bash.

$ docker run -i -t ubuntu  /bin/bash
[email protected]:/# ls
bin  boot  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
[email protected]:/# cat > foo
This is a really important file!!!!
[email protected]:/# exit

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

$ docker run -i -t ubuntu  /bin/bash
[email protected]:/# ls
bin  boot  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
[email protected]:/# exit

Но контейнер, который теперь больше не работает, имеет состояние и может быть сохранен (привязан к изображению).

$ docker ps -a
CONTAINER ID        IMAGE               COMMAND                CREATED              STATUS                          PORTS                      NAMES
abf181be4379        ubuntu:14.04        /bin/bash              17 seconds ago       Exited (0) 12 seconds ago                                  elegant_ardinghelli    
48cff2e9be75        ubuntu:14.04        /bin/bash              About a minute ago   Exited (0) 50 seconds ago                                  determined_pare        
...

Позвольте создать образ из ID контейнера 48cff2e9be75, где мы создали наш файл:

$ docker commit 48cff2e9be75 ubuntu-foo
d0e4ae9a911d0243e95556e229c8e0873b623eeed4c7816268db090dfdd149c2

Теперь у нас есть новое изображение с нашим действительно важным файлом:

$ docker run ubuntu-foo /bin/cat foo
This is a really important file!!!!

Попробуйте выполнить команду docker images. Вы должны увидеть новое изображение ubuntu-foo, указанное вместе с стандартным изображением ubuntu, с которого мы начали.

Ответ 3

Используя аналогию объектно-ориентированного программирования, разница между изображением Докера и контейнером Докера является такой же, как разница между классом и объектом. Объект - это экземпляр среды выполнения класса. Точно так же контейнер представляет собой экземпляр времени выполнения изображения.

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

  • Создайте файл Docker со следующим содержимым:

    FROM httpd:2.4
    
  • Установить сервер Apache

    sudo docker build -t my-apache2 .
    
  • Запустите изображение

    sudo docker run -it --rm --name my-running-app my-apache2
    
  • Список изображений докеров

    sudo docker images
    
  • Перечислить текущий контейнер Docker

    docker ps
    
  • Список всех контейнеров

    docker ps -a
    
  • Список последних созданных контейнеров

    docker ps -l
    

Ответ 4

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

Механизм Docker берет изображение и добавляет файловую систему чтения-записи сверху, а затем инициализирует различные настройки. Эти параметры включают параметры сети (IP, порт и т.д.), Имя, идентификатор и любые ограничения ресурсов (ЦП, память). Если двигатель Docker попросил запустить контейнер, он также инициализирует процесс внутри него. Контейнер можно остановить и перезапустить, и в этом случае он сохранит все настройки и изменения файловой системы (но потеряет что-либо в памяти, и все процессы будут перезапущены). По этой причине остановленный или выходящий контейнер не совпадает с изображением.

Ответ 5

Это довольно прямо.

(Для более глубокого понимания прочитайте this.)

Изображения -

Файловая система и конфигурация нашего приложения, которые используются для создавать контейнеры.

Контейнеры -

Запуск экземпляров изображений Docker - контейнеры запускают фактические Приложения. Контейнер включает приложение и все его зависимостей. Он разделяет ядро ​​с другими контейнерами и работает как изолированный процесс в пользовательском пространстве на ОС хоста.

Docker daemon -

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

Клиент Docker -

Инструмент командной строки, который позволяет пользователю взаимодействовать с Docker демон.

Docker Store -

Store - это, помимо прочего, реестр изображений Docker. Ты можешь подумайте о реестре как каталоге всех доступных изображений Docker.

Этот поток поможет вам лучше понять его. введите описание изображения здесь

Ответ 6

Изображения [например, vm]

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

Контейнеры [как рубильник]

  • Изолированная платформа приложений
  • Содержит все необходимое для запуска вашего приложения.
  • На основе изображений

images link to show what is a container

Ответ 7

В Docker все начинается с изображения. Изображение - это каждый файл, который составляет достаточно операционной системы, чтобы делать то, что вам нужно. Традиционно вы должны установить всю операционную систему со всем для каждого используемого вами приложения. С Docker вы соедините его так, чтобы у вас был небольшой контейнер с достаточной операционной системой, чтобы делать то, что вам нужно делать, и вы можете иметь много и много из них эффективно на компьютере.

Используйте docker images, чтобы увидеть установленные изображения и docker ps, чтобы увидеть запущенные изображения. Когда вы вводите docker run, он принимает изображение и делает его живым контейнером с запущенным процессом. Я обычно использую:

docker run -ti <image>:<tag> bash

Наконец, у изображений есть свой набор идентификаторов, а контейнеры имеют свой собственный набор идентификаторов - они не перекрываются.

Ответ 8

Контейнеры

основаны на изображениях. Изображение должно быть передано команде запуска dockers. Пример: - Изображение busybox

http://i.stack.imgur.com/eK9dC.png

Здесь мы указываем образ под названием busybox. docker не имеет этого изображения локально и извлекает его из общего реестра. Реестр представляет собой каталог изображений докеров, с которыми клиент-докер может взаимодействовать и загружать изображение. Как только изображение потянуто, докеры запускают контейнер и выполняют команду echo hello world.

Ответ 9

Изображения докеров: Он содержит список команд и инструкций о том, как создавать и запускать контейнер. Таким образом, в основном изображения содержат все данные и метаданные, необходимые для запуска контейнера (также называемого планом). Мы не можем обедать в контейнере без указания изображений.

$docker images centos

Перечислите всю доступную версию centos.

Контейнер для докеров: Контейнеры обедают от изображений, поэтому мы можем сказать, что контейнер - это исполняемый экземпляр изображений. Контейнер - это среда выполнения, в отличие от изображений, которая является конструкцией времени построения.