Как использовать команду docker desktop engine use для переключения типов контейнеров

DockerDockerBeginner
Практиковаться сейчас

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

Введение

В этой лабораторной работе вы научитесь использовать команду docker desktop engine use для переключения между типами контейнеров. Вы начнёте с понимания назначения Docker engine (движка Docker) и способа проверки текущего типа контейнера.

Затем вы изучите, как переключиться на Windows-контейнеры (в Windows-системах) и вернуться обратно к Linux-контейнерам. Эта лабораторная работа предоставит практический опыт управления контейнерными средами с использованием Docker CLI.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL docker(("Docker")) -.-> docker/ImageOperationsGroup(["Image Operations"]) docker(("Docker")) -.-> docker/SystemManagementGroup(["System Management"]) docker(("Docker")) -.-> docker/ContainerOperationsGroup(["Container Operations"]) docker/ContainerOperationsGroup -.-> docker/run("Run a Container") docker/ImageOperationsGroup -.-> docker/pull("Pull Image from Repository") docker/SystemManagementGroup -.-> docker/info("Display System-Wide Information") subgraph Lab Skills docker/run -.-> lab-555142{{"Как использовать команду docker desktop engine use для переключения типов контейнеров"}} docker/pull -.-> lab-555142{{"Как использовать команду docker desktop engine use для переключения типов контейнеров"}} docker/info -.-> lab-555142{{"Как использовать команду docker desktop engine use для переключения типов контейнеров"}} end

Понимание назначения команды docker desktop engine use

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

Docker engine — это основной компонент Docker. Это клиент-серверное приложение, состоящее из следующих ключевых компонентов:

  • Сервер (демон) — долго работающий процесс (команда dockerd).
  • REST API, определяющий интерфейсы для взаимодействия с демоном и управления им.
  • Интерфейс командной строки (CLI, команда docker).

CLI использует REST API для управления демоном Docker через скрипты или прямые команды. Многие другие приложения Docker также используют этот API и CLI.

В среде LabEx Docker engine уже установлен и запущен. Это можно проверить с помощью команды docker info, которая отображает системную информацию о Docker.

docker info

Вы должны увидеть вывод, похожий на этот, с деталями о версии Docker, драйвере хранилища и другой информацией.

Client:
 Version:           20.10.21
 API version:       1.41
 Go version:        go1.18.9
 Git commit:        baeda1f
 Built:             Tue Oct 25 18:01:17 2022
 OS/Arch:           linux/amd64
 Context:           default
 Experimental:      true

Server:
 Engine:
  Version:          20.10.21
  API version:      1.41 (minimum version 1.12)
  Go version:       go1.18.9
  Git commit:       305620d
  Built:            Tue Oct 25 17:59:50 2022
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.6.10
  GitCommit:        b34a5c8e5367b9d7e345e9371193898cdce23f40
 runc:
  Version:          1.1.4
  GitCommit:        v1.1.4-0-g5fd4c4d
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0
 ... (more output)

Этот вывод подтверждает, что Docker engine работает, и предоставляет детали о его конфигурации. Понимание работы Docker engine — это первый шаг в работе с контейнерами.

Проверка текущего типа контейнера

На этом шаге мы проверим текущий тип контейнеров, поддерживаемый Docker engine в среде LabEx. Docker может запускать различные типы контейнеров в зависимости от базовой операционной системы. В Linux Docker в основном работает с Linux-контейнерами. В Windows Docker Desktop позволяет переключаться между Linux- и Windows-контейнерами.

В среде LabEx вы работаете на виртуальной машине Linux. Следовательно, Docker engine настроен для работы с Linux-контейнерами. Это можно подтвердить, повторно изучив вывод команды docker info. Обратите внимание на поле OSType.

docker info

В выводе вы должны увидеть строку следующего вида:

OSType: linux

Это указывает, что Docker engine в настоящее время настроен для работы с Linux-контейнерами. Это стандартное и ожидаемое поведение в Linux-системе.

Для наглядности давайте попробуем запустить простой Linux-контейнер. Мы будем использовать образ hello-world — очень маленький образ, который просто выводит сообщение и завершает работу. Сначала нам нужно загрузить образ на локальную машину.

docker pull hello-world

Вы должны увидеть вывод, указывающий на загрузку образа.

Using default tag: latest
latest: Pulling from library/hello-world
2db29710123e: Pull complete
Digest: sha256:f5233545e4356188889a389e18b407cd9f61f46056b1e172b338cd91f09e9e4c
Status: Downloaded newer image for hello-world:latest
docker.io/library/hello-world:latest

Теперь запустим контейнер с помощью команды docker run.

docker run hello-world

Вы должны увидеть вывод, аналогичный этому — сообщение, сгенерированное контейнером hello-world.

Hello from Docker!
This message shows that your installation appears to be working correctly.

To generate this message, Docker took the following steps:
 1. The Docker client contacted the Docker daemon.
 2. The Docker daemon pulled the "hello-world" image from the Docker Hub
    (assuming it was not already locally available).
 3. The Docker daemon created a new container from that image which runs the
    executable that produces the output you are currently reading.
 4. The Docker daemon streamed that output to the Docker client, which sent it
    to your terminal.

To try something more ambitious, you can run an Ubuntu container with:
 $ docker run -it ubuntu bash

Это подтверждает, что вы можете успешно запускать Linux-контейнеры в данной среде.

Переключение на Windows-контейнеры (только для Windows)

На этом шаге мы рассмотрим переключение на Windows-контейнеры. Обратите внимание, что этот шаг применим только если вы используете Docker Desktop в операционной системе Windows. Среда LabEx представляет собой Linux-виртуальную машину, поэтому фактическое переключение здесь невозможно. Однако понимание этой концепции важно при работе с Docker в Windows.

В Windows Docker Desktop по умолчанию запускает небольшую Linux-виртуальную машину для размещения Docker engine и работы с Linux-контейнерами. Это связано с тем, что ядро Docker изначально разрабатывалось для Linux. Однако Windows также поддерживает работу с нативными Windows-контейнерами.

Если бы вы работали на компьютере с Windows с установленным Docker Desktop, переключение на Windows-контейнеры обычно выполняется через правый клик по иконке Docker в системном трее с выбором опции "Switch to Windows containers". Это действие перенастраивает Docker-демон для использования среды выполнения Windows-контейнеров вместо Linux-виртуальной машины.

После переключения вы сможете загружать и запускать образы, собранные для Windows, например mcr.microsoft.com/windows/nanoserver.

Например, на компьютере с Windows после переключения можно выполнить:

docker pull mcr.microsoft.com/windows/nanoserver
docker run mcr.microsoft.com/windows/nanoserver cmd /c echo Hello from Windows Container!

Вывод будет следующим:

Hello from Windows Container!

Поскольку вы находитесь в Linux-среде, попытки загрузить или запустить Windows-контейнеры завершатся ошибкой. Docker engine в этой Linux-виртуальной машине не способен работать с Windows-контейнерами.

Продемонстрируем это, попытавшись загрузить Windows-образ:

docker pull mcr.microsoft.com/windows/nanoserver

Скорее всего, вы увидите сообщение об ошибке, указывающее, что образ не найден или не может быть загружен, так как Docker-демон ищет Linux-образ с таким именем.

Using default tag: latest
Error response from daemon: manifest for mcr.microsoft.com/windows/nanoserver:latest not found: manifest unknown: manifest unknown

Это подтверждает, что текущая среда настроена для работы с Linux-контейнерами и не может запускать Windows-контейнеры.

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

Возврат к Linux-контейнерам (только для Windows)

На этом шаге мы рассмотрим переключение обратно на Linux-контейнеры. Как и в предыдущем шаге, это актуально только при использовании Docker Desktop в операционной системе Windows. В Linux-среде LabEx вы уже используете Linux-контейнеры, поэтому никаких действий для переключения не требуется.

На компьютере с Windows, где ранее было выполнено переключение на Windows-контейнеры, возврат к Linux-контейнерам осуществляется через правый клик по иконке Docker в системном трее с выбором опции "Switch to Linux containers". Это действие останавливает среду выполнения Windows-контейнеров и перезапускает Linux-виртуальную машину, на которой работает Docker engine для Linux-контейнеров.

После возврата к Linux-контейнерам на компьютере с Windows вы снова сможете загружать и запускать Linux-образы, такие как образ ubuntu.

Например, на компьютере с Windows после переключения можно выполнить:

docker pull ubuntu
docker run ubuntu echo Hello from Linux Container!

Вывод будет следующим:

Hello from Linux Container!

Поскольку вы находитесь в Linux-среде, вы уже используете Linux-контейнеры. Это можно подтвердить, повторно проверив поле OSType в выводе команды docker info.

docker info

Как было показано в Шаге 2, вывод будет содержать:

OSType: linux

Это подтверждает, что Docker engine в среде LabEx настроен для работы с Linux-контейнерами, и никаких действий для переключения не требуется.

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

Итоги

В этой лабораторной работе мы начали с изучения назначения Docker engine — основного компонента платформы Docker для контейнеризации. Мы узнали, что Docker engine состоит из демона, REST API и интерфейса командной строки (CLI). Мы проверили установку Docker и его статус с помощью команды docker info, которая предоставила подробную системную информацию о Docker-среде.

После первоначального ознакомления мы перешли к проверке текущего типа контейнеров, используемых Docker engine. Для пользователей Windows в лабораторной работе было показано, как переключаться между типами контейнеров — на Windows-контейнеры и обратно на Linux-контейнеры, демонстрируя управление разными контейнерными средами в Docker Desktop.