Установка Docker на сервер Ubuntu 13.04
Ubuntu | Комментировать запись
Docker – это открытая платформа, позволяющая автоматизировать развёртывание приложений путём создания портативных автономных контейнеров, независимых от аппаратного обеспечения, языка, фреймворка, упаковки файлов и хостинг-провайдера.
Данное руководство покажет, как собрать и установить Docker на свежий облачный сервер Ubuntu 13.04.
Примечание: Docker поддерживает только 64-битную архитектуру.
1: Подготовка сервера
Для начала нужно создать пользователя, домашний каталог которого будет использован для хранения файлов Go и Docker. Введите следующую команду, заменив USER именем пользователя:
sudo useradd -m -d /home/USER -s /bin/bash -U USER
Чтобы установить пароль, запустите:
passwd USER
Также рекомендуется открыть данному пользователю доступ к команде sudo. Для этого создайте группу admin и добавьте в неё нового пользователя.
groupadd admin && usermod -a -G admin USER
Войдите в систему как новый пользователь:
su USER
Домашний каталог текущего пользователя будет хранить файл Go и Docker. Откройте этот каталог:
cd ~/
Установите зависимости:
sudo apt-get update
sudo apt-get install linux-image-extra-`uname -r`
После этого на экране появится следующее сообщение:
A new version of /boot/grub/menu.lst is available, but the version installed currently has been locally modified.
What would you do about menu.lst?
Ниже будет предложен список действий; выберите «keep the local version currently installed».
2: Установка Go
Для работы Docker требуется Go 1.1. Как правило, в стандартных репозиториях системы хранятся устаревшие версии пакетов, поэтому лучше загрузить Go вручную.
wget http://go.googlecode.com/files/go1.1.1.linux-amd64.tar.gz
tar xf go1.1.1.linux-amd64.tar.gz
rm go1.1.1.linux-amd64.tar.gz
Теперь нужно внести некоторые переменные окружения, чтобы .profile определил местонахождение установки Go:
echo "export GOROOT=\$HOME/go" >> ~/.profile
echo "PATH=$PATH:\$GOROOT/bin" >> ~/.profile
source ~/.profile
Теперь на экране должна появиться только что установленная версия Go.
Создайте каталог и добавьте ещё несколько переменных среды для .profile:
mkdir ~/gocode
echo "export GOPATH=\$HOME/gocode" >> ~/.profile
echo "PATH=\$PATH:\$GOPATH/bin" >> ~/.profile
source ~/.profile
В документации Go говорится, что переменная $GOPATH – это разделенный двоеточиями список путей, в котором может находиться код Go, объекты, пакеты и исполнимые файлы.
То есть, $GOPATH – это место, в котором хранятся все исходники и зависимости Docker. Это позволяет упростить установку Docker до одной команды.
3: Установка Docker
Установите остальные зависимости Docker:
sudo apt-get install lxc curl xz-utils git mercurial
Создайте структуру каталогов для сборки:
mkdir -p $GOPATH/src/github.com/dotcloud
Клонируйте репозиторий Docker с github:
cd $GOPATH/src/github.com/dotcloud
git clone https://github.com/dotcloud/docker.git
Теперь можно использовать удобную функцию go get, чтобы загрузить и установить пакеты и зависимости, необходимые для сборки Docker:
cd $GOPATH/src/github.com/dotcloud/docker
go get -v github.com/dotcloud/docker/...
Эта команда установит Docker. Чтобы иметь возможность запускать исполнимые файлы Docker как root, не указывая полный путь, создайте символьную ссылку на каталог /usr/local/bin:
sudo ln -s $GOPATH/bin/docker /usr/local/bin/docker
Запустите Docker
sudo docker -d &
Выполнив эту команду, нажмите Enter, чтобы запустить Docker в фоновом режиме. Проверьте установку, загрузив базовый образ контейнера.
docker pull base
После загрузки попробуйте запустить новый контейнер:
docker run -t base /bin/echo "Hello, world."
Чтобы обновить Docker, достаточно остановить сервис, удалить бинарные файлы, загрузить репозиторий при помощи функции go install, а затем перезапустить Docker:
sudo kill $(cat /var/run/docker.pid)
rm $GOPATH/bin/docker
cd $GOPATH/src/github.com/dotcloud/docker && git pull origin master
go install -v github.com/dotcloud/docker/...
sudo docker -d &
Вот несколько полезных ссылок:
- The Docker Index (здесь можно найти разработанные сообществом образы Docker).
- Страница Docker на Github.