Часть 1. Предпосылки и основы
Глава 2. Установка
Содержание
Данная глава коротко охватывает шаги, требующиеся для установки Docker. Существует ряд ляпов, зависящих от того, какой операционной системой вы пользуетесь; однако при некоторой удаче, она должна быть простой и безболезненной. Если у вас уже есть установленная последняя версия Docker (скажем, 1.8 или новее {Прим. пер.: на момент перевода 1.10}), вы можете благополучно перейти к к следующей главе.
Общепризнанно, что самый лучший способ установки Docker в Linux состоит в работе со сценарием установки предоставляемым Docker. Хотя большинство дистрибутивов Linux имеют свои собственные пакеты, они имеют тенденцию отставать от редакций Docker, что является серьёзной проблемой, учитывая темпы развития Docker.
Для автоматической установки Docker вам следует иметь возможность воспользоваться сценарием предлагаемым на
https://get.docker.com. Официальные инструкции предписывают вам
просто выполнить curl -sSL | sh or wget -qO- | sh
, и вы можете так и поступить, но я рекомендую вам
проверить сценарий перед его запуском и удостовериться, что вы удовлетворитесь изменениями, которые он сделает в вашей системе:
$ curl https://get.docker.com > /tmp/install.sh $ cat /tmp/install.sh ... $ chmod +x /tmp/install.sh $ /tmp/install.sh ...
Сценарий выполнит ряд проверок, затем установит Docker с применением соответствующего пакета для вашей системы. Он также установит ряд зависимостей для безопасности и свойств файловой системы, если они пропущены.
Если вы просто не хотите пользоваться установщиком, или вы хотите использовать другую версию Docker, чем предоставляется установщиком, вы также можете загрузить двоичные коды с веб- сайта Docker. Недостатком этого подхода будет отсутствие проверок зависимостей и к тому же вам придется устанавливать обновления вручную. За дополнительной информацией и ссылок на двоичные коды отсылаем вас к Docker Binary page.
Если вы работаете с дистрибутивом на основе Red Hat из перечня RHEL, CentOS, Fedora, вы, скорее всего, имеете установленным модуль безопасности SELinux.
При начале работы с Docker я рекомендую вам выполнять SELinux в разрешающем (permissive) режиме, который будет регистрировать ошибки, а не исключать их принудительно. Если вы исполняете SELinux в принудительном (enforcing) режиме, вы, скорее всего увидите различные загадочные ошибки запрещения полномочий ("Permission Denied") при выполнении примеров из данной книги.
Чтобы проверить ваш режим SELinux, выполните sestatus
и проверьте вывод. Например:
$ sestatus SELinux status: enabled SELinuxfs mount: /sys/fs/selinux SELinux root directory: /etc/selinux Loaded policy name: targeted Current mode: enforcing1 Mode from config file: error (Success) Policy MLS status: enabled Policy deny_unknown status: allowed Max kernel policy version: 28
- 1
Если вы увидели здесь "enforcing", SELinux разрешён и правила принуждающие.
Чтобы изменить SELinux в разрешающий режим, просто выполните sudo setenforce 0
.
За дополнительной информацией по SELinux и зачем вам следует рассматривать его разрешённым раз уж вы доверяете Docker, отсылаем к разделу "SELinux".
Поскольку Docker является двоичным файлом с полномочиями, по умолчанию нам необходимо предворять команды префиксом
sudo
для их исполнения. Это быстро начинает докучать. Мы можем избавиться от этого добавив нашего
пользователя в группу docker. В Ubuntu вам надлежит выполнить следующее:
$ sudo usermod -aG docker
что создаст группу docker, если она ещё не существует и добавить в неё текущего пользователя. Затем вам следует выйти из системы и зарегистрироваться в ней вновь. В прочих дистрибутивах Linux действия должны быть похожими.
Вам также следует перезапустить службу Docker что зависит от дистрибутива. В Ubuntu это выглядит следующим образом:
$ sudo service docker restart
Для краткости данная книга опускает sudo
в командах Docker.
Предостережение | |
---|---|
Добавление пользователя в группу docker эквивалентно наделению этого пользователя полномочиями root. Раз уж так, это оказывает влияние на безопасность, о котором вы должны быть осведомлены, в особенности, если вы совместно используете машину. За дополнительной информацией отсылаем вас к Docker security page. |
Если вы хотите использовать Windows или Mac OS, вам понадобится некий вид виртуализации для выполнения Docker (Windows {Microsoft} и Docker
объявили об совместной инициативе по поддержке Docker на Windows Server. Это позволит пользователям Windows Server запускать
образы на основе Windows без виртуализации). Вы можете загрузить полное решение ВМ и следовать инструкциям Linux для установки Docker или
установить Docker Toolbox, который содержит
минимальную ВМ boot2docker
а также прочий инструментарий Docker, который мы будем применять на
протяжении этой книги, например, Compose и Swarm. Если вы используете Homebrew для установки приложений на своём MAC, существует
brew recipe
, доступный для boot2docker
, однако обычно я
рекомендую применять официальную установку Toolbox во избежание проблем.
После того, как Toolbox установлен, вы можете получить доступ к Docker открыв терминал быстрого запуска Docker (Docker Toolbox также содержит Kitematic, графический интерфейс для работы с контейнерами Docker. Мы не будем описывать Kitematic в данной книге, но это, несомненно, ценное приобретение, особенно при начале работы с Docker). В противном случае вы можете настроить существующий терминал введя следующие команды:
$ docker-machine start default Starting VM... Started machines may have new IP addresses. You may need to rerun the `docker-machine env` command. $ eval $(docker-machine env default)
которые настроят вашу среду установками, необходимыми для доступа Docker Engine, работающего в вашей ВМ.
При использовании Docker Toolbox избегайте следующего:
-
В примерах в данной книге я полагаю, что Docker работает на вашей машине хоста. Если вы применяете Docker Toolbox, это будет не тот случай. В частности, вам придется изменять ссылки на
localhost
на IP адреса вашей ВМ. Например:$ curl localhost:5000
превратится в нечто типа:
$ curl 192.168.59.103:5000
Вы можете легко обнаружить IP вашей ВМ выполнив
docker-machine ip default
, что делает возможной некую автоматизацию:$ curl $(docker-machine ip default):5000
-
Соответствующие тома между вашей локальной ОС и контейнером Docker должны быть перекрестно смонтированы внутри ВМ. Docker Toolbox автоматизирует это до некоторой степени, однако убедитесь что это произошло если вы испытываете проблемы при использовании томов Docker.
-
Вам может потребоваться изменить настройки внутри ВМ если у вас имеются специальные требования. Файл /var/lib/boot2docker/profile внутри ВМ
boot2docker
имеет разнообразные установки, включая настройки Docker Engine. Вы можете также выполнить свой собственный сценарий после инициализации ВМ, изменив файл /var/lib/boot2docker/bootlocal.sh. За дополнительными подробностями отсылаем к boot2docker GitHub repository.
Если у вас возникнут какие-либо проблемы в последующих примерах в данной книге, попробуйте зарегистрироваться напрямую в ВМ с
docker-machine ssh default
и выполнить команду там.
Экспериментальный канал Docker | |
---|---|
Помимо обычной, стабильной сборки, Docker поддерживает экспериментальную сборку, которая содержит новый функционал для целей тестирования. Поскольку эти функции всё ещё обсуждаются и разрабатываются, они скорее всего значительно изменятся прежде чем войдут в стабильную сборку. Экспериментальная сборка должна применяться исключительно для исследования новых возможностей перед их официальным выпуском и никогда не должны применяться в промышленной эксплуатации. Экспериментальная сборка может быть установлена в Linux с применением следующего сценария: $ curl -sSL https://experimental.docker.com/ | sh или путём загрузки версии двоичного кода с веб- сайта Docker. Отметим, что эта сборка обновляется по ночам, а для верификации загрузок доступны хэши./p> |
Просто для того, чтобы убедиться что всё установлено корректно и работает, попробуйте выполнить команду
docker version
. Вы должны увидеть что-то вроде:
$ docker version Client: Version: 1.8.1 API version: 1.20 Go version: go1.4.2 Git commit: d12ea79 Built: Thu Aug 13 02:35:49 UTC 2015 OS/Arch: linux/amd64 Server: Version: 1.8.1 API version: 1.20 Go version: go1.4.2 Git commit: d12ea79 Built: Thu Aug 13 02:35:49 UTC 2015 OS/Arch: linux/amd64
Если так, вы всё установили и готовы к следующей главе. Если вместо этого вы получили что-то типа:
$ docker version Client: Version: 1.8.1 API version: 1.20 Go version: go1.4.2 Git commit: d12ea79 Built: Thu Aug 13 02:35:49 UTC 2015 OS/Arch: linux/amd64 Get http:///var/run/docker.sock/v1.20/version: dial unix /var/run/docker.sock: no such file or directory. * Are you trying to connect to a TLS-enabled daemon without TLS? * Is your docker daemon up and running?
это означает, что демон Docker не работает (или клиент не может получить к нему доступ). Чтобы исследовать проблему, попытайтесь
запустить демон Docker вручную выполнив sudo docker daemon
- это должно снабдить вас некоторой
информацией о том, что идёт не так и помочь в поиске ответа. (Отметим, что это работает только на хосте Linux. Если вы применяете
Docker Toolbox или нечто аналогичное, вам следует свериться с документацией для дополнительных подсказок.)