Установка Docker Desktop на Mac OS

Виртуализация

Установка Docker Desktop на Mac OS

Все статьи «Уроки Docker на русском»

Чтобы скачать Docker Desktop для Mac, перейдите в Docker Hub.

1. Что нужно знать перед тем, как установить Docker на Mac OS

Если вы уже запускали Docker на своем компьютере, сначала прочитайте инструкцию Docker Desktop for Mac vs. Docker Toolbox, чтобы понять влияние установленного Docker Toolbox на настройку среды для Docker Desktop под Mac и как эти два продукта могут сосуществовать.

  • Связь с Docker Machine: Установка Docker Desktop не влияет на образы, созданные с помощью Docker Machine. У вас есть возможность скопировать контейнеры и образы (если такие существуют) на новую виртуальную машину Docker Desktop для Mac HyperKit. Когда вы используете Docker Desktop, вам не нужны узлы Docker Machine, работающие локально (или где-то еще). С Docker Desktop у вас работает новая собственная система виртуализации (HyperKit), которая заменяет систему VirtualBox. Чтобы узнать больше, смотрите Docker Desktop for Mac vs. Docker Toolbox.
  • Системные требования: Docker Desktop запустится только при соблюдении всех этих требований.
    • Аппаратное обеспечение Mac должно быть модели 2010 года или новее с аппаратной поддержкой Intel модуля управления памятью (Memory Management Unit, MMU) для виртуализации, включая расширенные таблицы страниц (Extended Page Tables, EPT) и неограниченный режим (Unrestricted Mode). Вы можете проверить, имеет ли ваша машина такую поддержку, выполнив в терминале следующую команду: sysctl kern.hv_support

Если виртуализация включена и доступна на вашем Mac, вы увидите следующее.

$ sysctl kern.hv_support
kern.hv_support: 1

Если виртуализация не поддерживается или отключена.

$ sysctl kern.hv_support
kern.hv_support: 0
    • Поддерживаются macOS Sierra 10.12 и более новые выпуски macOS. Мы рекомендуем выполнить обновление до последней версии macOS.
    • Не менее 4 ГБ оперативной памяти.
    • НЕ ДОЛЖЕН быть установлен VirtualBox версии меньше 4.3.30 (он несовместим с Docker для Mac). Если у вас установлена более новая версия VirtualBox, это нормально.

Примечание. Если ваша система не удовлетворяет этим требованиям, вы можете установить Docker Toolbox, который использует Oracle VirtualBox вместо HyperKit.

2. Установка и запуск Docker Desktop для Mac

1. Дважды щелкните, Docker.dmg чтобы открыть программу установки, затем перетащите кита Moby в папку «Приложения».

2. Дважды щелкните Docker.app в папке «Приложения», чтобы запустить Docker.

Вам будет предложено авторизоваться в Docker.app с помощью системного пароля после запуска. Привилегированный доступ необходим для установки сетевых компонентов и ссылок на приложения Docker.

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

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

3. Нажмите на кита, чтобы получить настройки и другие параметры.

4. Выберите About Docker, чтобы убедиться, что у вас последняя версия.

Поздравляем! Теперь вы готовы к работаете с Docker Desktop и можно идти далее.

3. Проверка версий

Убедитесь, что ваши версии docker, docker-compose и docker-machine обновлены и совместимы с Docker.app. Ваш вывод может отличаться, если вы устанавливали другую версию Docker Desktop.

$ docker --version
Docker version 19.03, build c97c6d6

$ docker-compose --version
docker-compose version 1.24.1, build 8dd22a9

$ docker-machine --version
docker-machine version 0.16.0, build 9ba6da9

4. Обзор приложения

1. Откройте терминал командной строки и проверьте, работает ли Docker, запустив простой образ, hello-world

$ docker run hello-world

Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
ca4f61b1923c: Pull complete
Digest: sha256:ca0eeb6fb05351dfc8759c20733c91def84cb8007aa89a5bf606bc8b315b9fc7
Status: Downloaded newer image for hello-world:latest

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

2. Запустите веб-сервер в контейнере докер. Как и на приведенном выше примере «Привет, мир», если изображение не найдено локально, Docker извлечет его из Docker Hub.

$ docker run --detach --publish=80:80 --name=webserver nginx

3. В веб-браузере перейдите по адресу localhost/, чтобы просмотреть домашнюю страницу nginx. Поскольку мы указали порт HTTP по умолчанию, нет необходимости добавлять :80 в конце URL.

Ранние бета-версии использовали docker в качестве имени хоста для URL. Теперь порты отображаются на частных IP-адресах виртуальной машины и перенаправляются на localhost.

4. Теперь можно просмотреть сведения о контейнере во время работы веб-сервера (с помощью docker container ls или docker ps).

$ docker container ls
CONTAINER ID   IMAGE   COMMAND                  CREATED              STATUS              PORTS                         NAMES
56f433965490   nginx   "nginx -g 'daemon off"   About a minute ago   Up About a minute   0.0.0.0:80->80/tcp, 443/tcp   webserver

5. Далее можно остановить или удалить контейнеры и образы с помощью следующих команд. Используйте флаг «all» (--all или -a) для просмотра остановленных контейнеров.

$ docker container ls
$ docker container stop webserver
$ docker container ls -a
$ docker container rm webserver
$ docker image ls
$ docker image rm nginx

5. Меню настроек

Нажмите на кита в строке меню → Настройки (Preferences) и настройте параметры описанные ниже.

5.1 Общие (General)

Общие настройки:

  • Запускать Docker при входе в систему: снимите этот флажок, если вы не хотите, чтобы Docker запускался во время начала  сеанса.
  • Автоматическая проверка обновлений уведомляет вас, когда обновление доступно. Нажмите OK, чтобы принять и установить обновления (или отменить, чтобы сохранить текущую версию). Если вы отключите эту опцию, вы все равно сможете узнать об обновлениях вручную, выбрав в меню кита → Проверить наличие обновлений (Check for Updates).
  • Включение виртуальной машины в резервные копии Time Machine создает резервные копии виртуальной машины Docker Desktop для Mac. (По умолчанию отключено.)
  • Надежное хранение учетных записей Docker в цепочке ключей MacOS, там же где хранятся ваши учетные данные для входа в Docker. (Включено по умолчанию.)
  • Отправлять статистику использования — отправлять диагностику, отчеты о сбоях и данные об использовании в Docker. Эта информация помогает Docker улучшить приложение и получить больше информации для устранения неполадок. (Включено по умолчанию.)

5.2 Общие файлы (File sharing)

Выберите, какие локальные каталоги вы хотите использовать в своих контейнерах. Общий доступ к файлам необходим для монтирования томов, если проект находится за пределами каталога /Users. В этом случае предоставьте общий доступ к диску, на котором находится Dockerfile и том. В противном случае вы получите file not found или cannot start service errors at runtime.

Настройки общего доступа к файлам:

  • Добавить каталог: нажмите + и перейдите к каталогу, который вы хотите добавить.
  • Apply & Restart делает каталог доступным для контейнеров с помощью функции Docker bind mount (-v).

Есть несколько ограничений на каталоги, которые могут быть общими:

    • Они не могут быть подкаталогом общего каталога.
    • Они не могут существовать внутри Docker.

Для получения дополнительной информации смотри подробнее.

5.3 Расширенные настройки (Advanced)

На вкладке «Дополнительно» вы можете ограничить ресурсы, доступные Docker.

Расширенные настройки:

  • Процессоры: по умолчанию Docker Desktop настроен на использование половины числа процессоров, доступных на хост-компьютере. Для увеличения производительности увеличьте это значение; чтобы уменьшить, уменьшите число.
  • Память: по умолчанию Docker для Mac настроен на использование 2 ГБ оперативной памяти, выделенной из общей доступной памяти на вашем Mac. Чтобы увеличить ОЗУ, увеличьте значение; чтобы уменьшить его, уменьшите число.
  • Swap: при необходимости настройте размер файла подкачки. По умолчанию это 1 ГБ.

5.4 Диск (Disk)

Можно указать путь к папке, где хранятся контейнеры и образы.

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

5.5 Прокси (Proxies)

Docker для MacOS обнаруживает настройки прокси HTTP/HTTPS в macOS и автоматически передает их в Docker и ваши контейнеры. Например, если вы установили настройки прокси на proxy.example.com, Docker использует этот прокси при вытягивании контейнеров.

 

Когда вы запускаете контейнер, ваши настройки прокси передадутся в контейнеры. Например.

$ docker run -it alpine env
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
HOSTNAME=b7edf988b2b5
TERM=xterm
HOME=/root
HTTP_PROXY=http://proxy.example.com:3128
http_proxy=http://proxy.example.com:3128
no_proxy=*.local, 169.254/16

Из приведенных выше результатов видно, что установлены переменные среды HTTP_PROXY, http_proxy и no_proxy. Когда ваша конфигурация прокси изменится, Docker автоматически перезагрузится, чтобы использовать новые настройки.

5.6 Демон (Daemon)

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

Выберите Basic, чтобы настроить демон с интерактивными настройками, или выберите Advanced, чтобы напрямую отредактировать JSON.

Экспериментальные функции

В версиях Docker для macOS Stable и Edge на Docker Engine включены экспериментальные функции, как описано в разделе Экспериментальные функции Docker. Если вы снимите флажок в экспериментальном режиме, Docker Desktop будет использовать текущий релиз Docker Engine.

Не включайте экспериментальные функции в продакшене

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

Вы можете увидеть, работаете ли вы в экспериментальном режиме в командной строке. Если Experimental имеет значение true, то Docker работает в экспериментальном режиме, как показано ниже. (Если false, экспериментальный режим отключен.)

$ docker version -f {{.Server.Experimental}}
true

Небезопасные репозитории

Вы можете настроить собственный и небезопасный репозиторий для хранения ваших общедоступных или закрытых образов (вместо использования Docker Hub или Docker Trusted Registry). Добавьте URL-адреса для ваших незащищенных репозиториев и их зеркал, на которых будут размещаться ваши образы.

Смотрите также:

Файл конфигурации демона

Перейдите на вкладку «Дополнительно (Advanced)», чтобы настроить демон в файле JSON. Полный список параметров см. В справочнике по командной строке Docker Engine.

Нажмите «Применить и перезагрузить (Apply & Restart)», чтобы сохранить настройки и перезагрузить Docker.

5.7 Kubernetes

В Docker для Mac 17.12 Edge (mac45) и выше и 18.06 Stable (mac70) и выше включен автономный сервер Kubernetes, который работает на вашем Mac, так что вы можете тестировать развертывание рабочих проектов Docker на Kubernetes.

Клиентская команда Kubernetes, kubectl, включена и настроена для подключения к локальному серверу Kubernetes. Если kubectl уже установлен и указывает на какую-то другую среду, такую как minikube или кластер GKE, обязательно измените контекст, чтобы kubectl указывал на docker-for-desktop.

$ kubectl config get-contexts
$ kubectl config use-context docker-for-desktop

Если вы установили kubectl с помощью Homebrew или каким-либо другим способом и столкнулись с конфликтами, удалите /usr/local/bin/kubectl.

  • Чтобы включить поддержку Kubernetes и установить автономный экземпляр Kubernetes, работающий в качестве контейнера Docker, выберите «Включить Kubernetes (Enable Kubernetes)», выберите оркестратор по умолчанию и нажмите кнопку «Применить (Apply)».

  • Вам потребуется подключение к Интернету. Образы, необходимые для запуска сервера Kubernetes, загружаются и инстанцируются в виде контейнеров. Также на вашем Mac должна быть установлена команда /usr/local/bin/kubectl.

Когда Kubernetes включен и работает, в правом нижнем углу диалогового окна «Настройки Docker Desktop для Mac» отображается дополнительный элемент строки состояния.

Состояние Kubernetes отображается в меню Docker.

  • По умолчанию контейнеры Kubernetes скрыты от таких команд, как docker service ls, поскольку управление ими вручную не поддерживается. Чтобы сделать их видимыми, выберите «Показать системные контейнеры (дополнительно) (Show system containers (advanced))», нажмите «Применить и перезапустить (Apply and restart)». 
  • Чтобы в любой момент отключить поддержку Kubernetes, снимите флажок «Включить Kubernetes (Enable Kubernetes)». Контейнеры Kubernetes остановятся и удалятся. Команда /usr/local/bin/kubectl также будет удалена.

    Дополнительные сведения об использовании интеграции Kubernetes с Docker Desktop см. В разделе Развертывание в Kubernetes.

5.8 Сброс (Reset)

Выберите в меню изображение кита -> Настройки (Preferences), затем нажмите Сброс (Reset), чтобы сбросить заводские настройки в состояние по умолчанию и перезапустите демон Docker.

Сброс настроек:

  • Restart — выберите, чтобы перезапустить демон Docker.
  • Удалить все данные (Remove all data) — эта опция удаляет/сбрасывает все данные Docker без сброса к заводским настройкам.
  • Восстановить заводские настройки по умолчанию (Reset to factory defaults) — выберите этот параметр, чтобы сбросить все параметры Docker для Mac OS в исходное состояние, такое же, как после первоначальной установки.
    • Удалить (Uninstall) — выберите этот вариант, чтобы удалить Docker Desktop из вашей системы.

Чтобы удалить Docker из терминала, запустите: <DockerforMacPath> --uninstall. Если вы устанавливали в каталог по умолчанию, эта команда обеспечит полное удаление:

$ /Applications/Docker.app/Contents/MacOS/Docker --uninstall
Docker is running, exiting...
Docker uninstalled successfully. You can move the Docker application to the trash.

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

 

6. Добавить сертификаты TLS

Вы можете добавить доверенные центры сертификации (ЦС) и клиентские сертификаты (используемые для проверки подлинности в репозиториях) к своему демону Docker.

6.1 Добавить пользовательский сертификат (на стороне сервера)

Поддерживаются все доверенные центры сертификации. Docker Desktop создает пакет сертификатов всех доверенных пользователей на основе цепочки ключей Mac и добавляет его в доверенные сертификаты Moby. Таким образом, если корпоративный SSL-сертификат является доверенным для пользователя на хосте, он доверяется и Docker Desktop.

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

$ sudo security add-trusted-cert -d -r trustRoot -k /Library/Keychains/System.keychain ca.crt

Или, если вы предпочитаете добавить сертификат только в свою собственную локальную цепочку ключей (а не для всех пользователей), выполните следующую команду:

$ security add-trusted-cert -d -r trustRoot -k ~/Library/Keychains/login.keychain ca.crt

Смотрите также, Каталог структур для сертификатов.

Примечание. Чтобы изменения вступили в силу, необходимо перезапустить Docker Desktop после внесения любых изменений в цепочку ключей или в каталог ~/.docker/certs.d.

Полное объяснение того, как это сделать, см. В блоге «Добавление самоподписанных сертификатов реестра в Docker & Docker для Mac».

6.2 Добавить клиентские сертификаты

Вы можете поместить свои клиентские сертификаты в ~/.docker/certs.d/<MyRegistry>:<Port>/client.cert и ~/.docker/certs.d/<MyRegistry>:<Port>/client.key.

Когда приложение Docker запускается, оно копирует папку ~/.docker/certs.d на вашем Mac в каталог /etc/docker/certs.d.

Вам нужно перезапустить Docker после внесения любых изменений в цепочку для ключей или в каталог ~/.docker/certs.d, чтобы изменения вступили в силу.

6.3 Структура каталогов для сертификатов

Если у вас есть такая структура каталогов, вам не нужно вручную добавлять сертификат в вашу учетную запись Mac OS:

/Users/<user>/.docker/certs.d/
└── <MyRegistry>:<Port>
   ├── ca.crt
   ├── client.cert
   └── client.key

Следующая структура иллюстрирует и объясняет конфигурацию с пользовательскими сертификатами:

/etc/docker/certs.d/        <-- Certificate directory
└── localhost:5000          <-- Hostname:port
   ├── client.cert          <-- Client certificate
   ├── client.key           <-- Client key
   └── ca.crt               <-- Certificate authority that signed
                                the registry certificate

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

/Users/<user>/.docker/certs.d/
└── <MyRegistry>:<Port>
    ├── client.cert
    └── client.key

Чтобы узнать больше о том, как установить корневой сертификат ЦС для реестра и как настроить клиентский сертификат TLS для проверки, см. Раздел Проверка клиентского репозитория с помощью сертификатов.

7. Установить дополнения shell

Docker Desktop поставляется со скриптами, позволяющими выполнять команды docker, docker-machine и docker-compose. Скрипты дополнений можно найти внутри Docker.app, в каталоге Contents/Resources/etc/, и их можно установить как в Bash, так и в Zsh.

7.1 Bash

Bash имеет встроенную поддержку дополнения. Чтобы активировать дополнения для команд Docker, эти файлы необходимо скопировать или создать ссылку на ваш каталог bash_completion.d/. Например, если вы установили bash через Homebrew:

etc=/Applications/Docker.app/Contents/Resources/etc
ln -s $etc/docker.bash-completion $(brew --prefix)/etc/bash_completion.d/docker
ln -s $etc/docker-machine.bash-completion $(brew --prefix)/etc/bash_completion.d/docker-machine
ln -s $etc/docker-compose.bash-completion $(brew --prefix)/etc/bash_completion.d/docker-compose

Добавьте следующее в ваш ~/.bash_profile:

[ -f /usr/local/etc/bash_completion ] && . /usr/local/etc/bash_completion

или

if [ -f $(brew --prefix)/etc/bash_completion ]; then
. $(brew --prefix)/etc/bash_completion
fi

7.2 Zsh

В Zsh система дополнений так же существует. Чтобы активировать дополнения для команд Docker, эти файлы необходимо скопировать или вставить в свой каталог Zsh site-functions/. Например, если вы установили Zsh через Homebrew:

etc=/Applications/Docker.app/Contents/Resources/etc
ln -s $etc/docker.zsh-completion /usr/local/share/zsh/site-functions/_docker
ln -s $etc/docker-machine.zsh-completion /usr/local/share/zsh/site-functions/_docker-machine
ln -s $etc/docker-compose.zsh-completion /usr/local/share/zsh/site-functions/_docker-compose

8. Docker Hub

Вы можете получить доступ к своей учетной записи Docker ID из Docker для Mac.

В меню Docker войдите в Docker Hub с помощью идентификатора Docker или создайте его.

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

Ознакомьтесь с этими темами Docker Hub, чтобы узнать больше:

Другие статьи по Docker можно посмотреть тут.

14:26
117
RSS
Нет комментариев. Ваш будет первым!

Авторизация

Войдите, используя Ваш аккаунт

Войти с помощью

Пользователи