Работа с контейнерами, установка docker.io в debian jessie
Добавлено: 21 июн 2015, 21:22
Обрисуем со старта нашу задачу. Допустим нам нужна тестовая площадка
для работы в оболочке ipython3. Мы только совсем недавно увидели релиз jessie,
но время не стоит на месте и с момента заморозки jessie-testing до сего дня
утекло как оказалось много воды. В стабильном репозитории дебиан есть два пакета
пригодные под наши цели это docker и lxc. Но мы пойдем другим путем и возмем версию
посвежее. В репозитории тестинг имеется пакет docker.io которым мы и воспользуемся,
для этого пропишем в /etc/apt/sources.list новый репозиторий
и создадим файл preferences в директории /etc/apt/preferences.d/ следующего содержания
Ну раз уж пошла такая пьянка то укажем для примера и репу анстебл с наименьшим
приоритетом, естественно что бы ей можно было воспользоваться следует добавить
еще одну строчку и в sources.list
Обновляемся
Теперь можно устанавливать пакеты из тестовой или нестабильной ветки репозиториев
с опцией -t
И посмотреть всех кандидатов на установку и уже установленных в системе выполнив
Пакета с названием docker.io в стабильной ветке не существует, посмотрим
Увидим этот пакет и в каких репах он находится, а так как он отсутсвует в стабильной ветке
мы сможем установить его без явного указания репы при помощи опции -t
Что бы работать с докером от лица обычного пользователя обязательно добавим себя
в группу
Вот и все. Все инструменты у нас в системе.
Что бы одновременно загрузить минимальный образ системы из публичного реестра docker,
создать контейнер с именем brick1, запустить его и подключится из терминала,
выполним всего лишь одну команду
Докер сперва проверит нет ли уже сущестующего образа debian:8 на локальной машине
и удостоверившись в его отсутствии скачает его по сети.
Образ дебиана с самым необходимым в нутри весит всего около 125Мб и долго ждать
не придется и даже мне с мобильным интернетом, если б кто научил достаточно было
просто покурить в сторонке. Образ с убунту весит не на много больше.
Судя по строке приглашения в нашем терминале мы находимся в нутри созданного контейнера.
Сразу необходимо обновить его
Теперь можно устанавливать необходимые нам программы
Я пользуюсь вим и устанавливаю его облегченную версию vi
Браузер установим для примера что бы наглядно проверить работоспособность сети
Установим и пакет-цель нашего проэкта ipython
Из соседнего терминала можно управлять контейнерами как мы привыкли
управлять виртуальными машинами с той лишь большой разницей что в каждом
госте вируальной мшины используется свой образ системы, а здесь мы используем
один образ со множеством изменений и добавлений в разных к нему контейнерах.
Удобно? Для многих задачь очень.
Что бы просмотреть список образов
Список запущенных контейнеров
Список всех контейнеров
[album]197[/album]
Остановить работу контейнера
Запустить контейнер
Подключится к работающиму контейнеру
Сохранить все изменения сделаные в контейнере в новом образе
Из нового образа можно создавать сколько угодно новых контейнеров и в них
уже будут существовать и vim-tiny и w3m и ipython3.
Советую установить например русскую локалку сохранить контейнер в новом образе,
а старый удалить комндой
Удалить теперь оказавшийся не нужным контейнер легко командой
Потому как все изменения сделаные нами упакованы в новом образе.
(Дико извиняюсь, следует заметить, что нужно сперва удалить контейнер,
а потом уже привязанный к нему образ.)
Заслуживает внимание создание контейнеров с общими директориями с целевым хостом
Если на целевом хосте нет директории /tmp/dir_brick1 то она будет
автоматически создана. После этого работая в контейнере все что вы поместите
в директорию /mnt будет автоматически доступно и в /tmp/dir_brick1 целевой машины.
Далее, если вы захотите остановить контейнер, а потом опять запустить
и подсоединится к нему с помощью команды
то все опции прописанные в момент создания контейнера будут действовать,
в том числе и общая между хостом и контейнером директория.
Еще одна интересная опция -p
Будет означать, что мы открыли два порта, 222-ой на localhost
и ему будет соответствовать открытый 22-ой в контейнере 172.17.0.?.
Узнать последнюю цифру ip адреса контейнера
Теперь если мы выполним в контейнере следующие команды
И наберем в другом терминале с целевого хоста
То мы подключимся к нашему вновь созданному пользователю из контейнера по протоколу ssh
Очень удобно и безопасно работать в изолированном контейнере и самое главное
при желании можно поделится своей работой, перенести на другой хост или просто
клонировать. Практически мы получаем мобильную версию вашего проэкта.
Да и еще, докер прекрасно работает во вложенных системах тоесть вы можете создавать
контейнеры в виртуальных машинах, уменьшая чрезмерное количество виртуалок и
уменьшая тем самым нагрузку на процессор хоста. Например имея свой любимый дебиан
на целевом хосте с гостем на виртуалке с centos, вы можете создать кучу виртуальных сереверов в отдельных контейнерах. Разве это не здорово? Сравните например 10 отдельных виртуальных машин и одну виртуалку с установленным одним образом с десятком
контейнеров весом ну пусть в 20 Мб изменений в каждом
Я считаю что докер прекрасный инструмент для многих проэктов, безопасная площадка
для тестинга и хороший помошник к виртуальной машине. Кто еще не в теме, присоединяйтесь.
Если было интересно то еще можно зайти сюда
для работы в оболочке ipython3. Мы только совсем недавно увидели релиз jessie,
но время не стоит на месте и с момента заморозки jessie-testing до сего дня
утекло как оказалось много воды. В стабильном репозитории дебиан есть два пакета
пригодные под наши цели это docker и lxc. Но мы пойдем другим путем и возмем версию
посвежее. В репозитории тестинг имеется пакет docker.io которым мы и воспользуемся,
для этого пропишем в /etc/apt/sources.list новый репозиторий
Код: Выделить всё
deb http://ftp.de.debian.org/debian/ testing main contrib non-freeКод: Выделить всё
Package: *
Pin: release a=stable
Pin-Priority: 700
Package: *
Pin: release a=testing
Pin-Priority: 650
Package: *
Pin: release a=unstable
Pin-Priority: 600приоритетом, естественно что бы ей можно было воспользоваться следует добавить
еще одну строчку и в sources.list
Обновляемся
Код: Выделить всё
apt updateс опцией -t
Код: Выделить всё
apt install -t testing paket
apt install paket/testingКод: Выделить всё
apt-cache policy paket
man apt_preferencesКод: Выделить всё
apt search docker.ioмы сможем установить его без явного указания репы при помощи опции -t
Код: Выделить всё
apt install docker.ioв группу
Код: Выделить всё
adduser nez docker
systemctl rebootЧто бы одновременно загрузить минимальный образ системы из публичного реестра docker,
создать контейнер с именем brick1, запустить его и подключится из терминала,
выполним всего лишь одну команду
Код: Выделить всё
docker run --name brick1 -it debian:8 /bin/bashи удостоверившись в его отсутствии скачает его по сети.
Образ дебиана с самым необходимым в нутри весит всего около 125Мб и долго ждать
не придется и даже мне с мобильным интернетом, если б кто научил достаточно было
просто покурить в сторонке. Образ с убунту весит не на много больше.
Судя по строке приглашения в нашем терминале мы находимся в нутри созданного контейнера.
Сразу необходимо обновить его
Код: Выделить всё
apt update && apt upgradeКод: Выделить всё
apt install vim-tiny w3mБраузер установим для примера что бы наглядно проверить работоспособность сети
Код: Выделить всё
w3m google.ruКод: Выделить всё
apt install ipython3управлять виртуальными машинами с той лишь большой разницей что в каждом
госте вируальной мшины используется свой образ системы, а здесь мы используем
один образ со множеством изменений и добавлений в разных к нему контейнерах.
Удобно? Для многих задачь очень.
Что бы просмотреть список образов
Код: Выделить всё
docker imagesКод: Выделить всё
docker psКод: Выделить всё
docker ps -aОстановить работу контейнера
Код: Выделить всё
docker stop brick1Код: Выделить всё
docket start brick1Код: Выделить всё
docker exec -it brick1 bashКод: Выделить всё
docker commit brick1 deb_ipythonуже будут существовать и vim-tiny и w3m и ipython3.
Советую установить например русскую локалку сохранить контейнер в новом образе,
а старый удалить комндой
Код: Выделить всё
docker rmi debian:8Код: Выделить всё
docker rm brick1(Дико извиняюсь, следует заметить, что нужно сперва удалить контейнер,
а потом уже привязанный к нему образ.)
Заслуживает внимание создание контейнеров с общими директориями с целевым хостом
Код: Выделить всё
docker run --name brick1 -v /tmp/dir_brick1:/mnt -it debian:8 /bin/bashавтоматически создана. После этого работая в контейнере все что вы поместите
в директорию /mnt будет автоматически доступно и в /tmp/dir_brick1 целевой машины.
Далее, если вы захотите остановить контейнер, а потом опять запустить
и подсоединится к нему с помощью команды
Код: Выделить всё
docker attach brick1в том числе и общая между хостом и контейнером директория.
Еще одна интересная опция -p
Код: Выделить всё
docker run --name -p 222:22 -it debian:8 /bin/bashи ему будет соответствовать открытый 22-ой в контейнере 172.17.0.?.
Узнать последнюю цифру ip адреса контейнера
Код: Выделить всё
ip aКод: Выделить всё
apt install openssh-server
adduser nez
service ssh startКод: Выделить всё
ssh -p 222 nez@localhostОчень удобно и безопасно работать в изолированном контейнере и самое главное
при желании можно поделится своей работой, перенести на другой хост или просто
клонировать. Практически мы получаем мобильную версию вашего проэкта.
Да и еще, докер прекрасно работает во вложенных системах тоесть вы можете создавать
контейнеры в виртуальных машинах, уменьшая чрезмерное количество виртуалок и
уменьшая тем самым нагрузку на процессор хоста. Например имея свой любимый дебиан
на целевом хосте с гостем на виртуалке с centos, вы можете создать кучу виртуальных сереверов в отдельных контейнерах. Разве это не здорово? Сравните например 10 отдельных виртуальных машин и одну виртуалку с установленным одним образом с десятком
контейнеров весом ну пусть в 20 Мб изменений в каждом
Я считаю что докер прекрасный инструмент для многих проэктов, безопасная площадка
для тестинга и хороший помошник к виртуальной машине. Кто еще не в теме, присоединяйтесь.
Если было интересно то еще можно зайти сюда