Работа с контейнерами, установка docker.io в debian jessie

Установка и настройка программ в Debian

Работа с контейнерами, установка docker.io в debian jessie

Сообщение nezabudka » 21 июн 2015, 21:22

Обрисуем со старта нашу задачу. Допустим нам нужна тестовая площадка
для работы в оболочке ipython3. Мы только совсем недавно увидели релиз jessie,
но время не стоит на месте и с момента заморозки jessie-testing до сего дня
утекло как оказалось много воды. В стабильном репозитории дебиан есть два пакета
пригодные под наши цели это docker и lxc. Но мы пойдем другим путем и возмем версию
посвежее. В репозитории тестинг имеется пакет docker.io которым мы и воспользуемся,
для этого пропишем в /etc/apt/sources.list новый репозиторий
Код: выделить все
deb http://ftp.de.debian.org/debian/ testing main contrib non-free

и создадим файл preferences в директории /etc/apt/preferences.d/ следующего содержания
Код: выделить все
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

Пакета с названием docker.io в стабильной ветке не существует, посмотрим
Код: выделить все
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

Докер сперва проверит нет ли уже сущестующего образа debian:8 на локальной машине
и удостоверившись в его отсутствии скачает его по сети.
Образ дебиана с самым необходимым в нутри весит всего около 125Мб и долго ждать
не придется и даже мне с мобильным интернетом, если б кто научил достаточно было
просто покурить в сторонке. Образ с убунту весит не на много больше.
Судя по строке приглашения в нашем терминале мы находимся в нутри созданного контейнера.
Сразу необходимо обновить его
Код: выделить все
apt update && apt upgrade

Теперь можно устанавливать необходимые нам программы
Код: выделить все
apt install vim-tiny w3m

Я пользуюсь вим и устанавливаю его облегченную версию vi
Браузер установим для примера что бы наглядно проверить работоспособность сети
Код: выделить все
w3m google.ru

Установим и пакет-цель нашего проэкта ipython
Код: выделить все
apt install ipython3

Из соседнего терминала можно управлять контейнерами как мы привыкли
управлять виртуальными машинами с той лишь большой разницей что в каждом
госте вируальной мшины используется свой образ системы, а здесь мы используем
один образ со множеством изменений и добавлений в разных к нему контейнерах.
Удобно? Для многих задачь очень.
Что бы просмотреть список образов
Код: выделить все
docker images

Список запущенных контейнеров
Код: выделить все
docker ps

Список всех контейнеров
Код: выделить все
docker ps -a

197
Остановить работу контейнера
Код: выделить все
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

Если на целевом хосте нет директории /tmp/dir_brick1 то она будет
автоматически создана. После этого работая в контейнере все что вы поместите
в директорию /mnt будет автоматически доступно и в /tmp/dir_brick1 целевой машины.
Далее, если вы захотите остановить контейнер, а потом опять запустить
и подсоединится к нему с помощью команды
Код: выделить все
docker attach brick1

то все опции прописанные в момент создания контейнера будут действовать,
в том числе и общая между хостом и контейнером директория.
Еще одна интересная опция -p
Код: выделить все
docker run --name -p 222:22 -it debian:8 /bin/bash

Будет означать, что мы открыли два порта, 222-ой на localhost
и ему будет соответствовать открытый 22-ой в контейнере 172.17.0.?.
Узнать последнюю цифру ip адреса контейнера
Код: выделить все
ip a

Теперь если мы выполним в контейнере следующие команды
Код: выделить все
apt install openssh-server
adduser nez
service ssh start

И наберем в другом терминале с целевого хоста
Код: выделить все
ssh -p 222 nez@localhost

То мы подключимся к нашему вновь созданному пользователю из контейнера по протоколу ssh
Очень удобно и безопасно работать в изолированном контейнере и самое главное
при желании можно поделится своей работой, перенести на другой хост или просто
клонировать. Практически мы получаем мобильную версию вашего проэкта.
Да и еще, докер прекрасно работает во вложенных системах тоесть вы можете создавать
контейнеры в виртуальных машинах, уменьшая чрезмерное количество виртуалок и
уменьшая тем самым нагрузку на процессор хоста. Например имея свой любимый дебиан
на целевом хосте с гостем на виртуалке с centos, вы можете создать кучу виртуальных сереверов в отдельных контейнерах. Разве это не здорово? Сравните например 10 отдельных виртуальных машин и одну виртуалку с установленным одним образом с десятком
контейнеров весом ну пусть в 20 Мб изменений в каждом :)
Я считаю что докер прекрасный инструмент для многих проэктов, безопасная площадка
для тестинга и хороший помошник к виртуальной машине. Кто еще не в теме, присоединяйтесь. ;)
Если было интересно то еще можно зайти сюда
"I invented the term Object-Oriented and I can tell you I did not have C++ in mind." - Alan Kay
Аватар пользователя
nezabudka
Местный говорун
Местный говорун
 
Автор темы
Сообщений: 613
Фото: 180
Стаж: 3 года 4 месяца 1 день
Откуда: Ростов на Дону
Благодарил (а): 286 раз.
Поблагодарили: 145 раз.

Работа с контейнерами, установка docker.io в debian jessie

Спонсор

Спонсор
 

Re: Работа с контейнерами, установка docker.io в debian jess

Сообщение Sunderland93 » 22 июн 2015, 07:49

Дырявое дерьмо этот докер
Sunderland93
 
Стаж: 48 лет 7 месяцев 19 дней

Re: Работа с контейнерами, установка docker.io в debian jess

Сообщение Oleg65 » 22 июн 2015, 08:09

Sunderland93 писал(а):

Дырявое дерьмо этот докер
Объясните - почему? :? Хочется знать о "подводных" камнях :oops:
Аватар пользователя
Oleg65
Местный говорун
Местный говорун
 
Сообщений: 854
Стаж: 3 года 7 месяцев 1 день
Откуда: г.Коломна Моск.обл.
Благодарил (а): 71 раз.
Поблагодарили: 208 раз.

Re: Работа с контейнерами, установка docker.io в debian jess

Сообщение Sunderland93 » 22 июн 2015, 09:10

Oleg65 писал(а):

Sunderland93 писал(а):

Дырявое дерьмо этот докер
Объясните - почему? :? Хочется знать о "подводных" камнях :oops:

Потому что уязвимостей там дохрена, и ошибок в дизайне. За подробностями в гугл.
Sunderland93
 
Стаж: 48 лет 7 месяцев 19 дней

Re: Работа с контейнерами, установка docker.io в debian jess

Сообщение Oleg65 » 22 июн 2015, 09:20

Sunderland93 писал(а):

Oleg65 писал(а):

Sunderland93 писал(а):

Дырявое дерьмо этот докер
Объясните - почему? :? Хочется знать о "подводных" камнях :oops:

Потому что уязвимостей там дохрена, и ошибок в дизайне. За подробностями в гугл.

Достойный ответ :good: ! Спасибо, что напомнили про Goooogle! ЛОР - в стороне курит!
Аватар пользователя
Oleg65
Местный говорун
Местный говорун
 
Сообщений: 854
Стаж: 3 года 7 месяцев 1 день
Откуда: г.Коломна Моск.обл.
Благодарил (а): 71 раз.
Поблагодарили: 208 раз.

Re: Работа с контейнерами, установка docker.io в debian jess

Сообщение Sunderland93 » 22 июн 2015, 09:40

Oleg65 писал(а):

Достойный ответ :good: ! Спасибо, что напомнили про Goooogle! ЛОР - в стороне курит!

Может мне ещё прочитать за вас? Если лень пройтись по поиску "уязвимости Docker" - ваши проблемы.
Sunderland93
 
Стаж: 48 лет 7 месяцев 19 дней

Re: Работа с контейнерами, установка docker.io в debian jess

Сообщение Oleg65 » 22 июн 2015, 10:18

Sunderland93 писал(а):

Oleg65 писал(а):

Достойный ответ :good: ! Спасибо, что напомнили про Goooogle! ЛОР - в стороне курит!

Может мне ещё прочитать за вас? Если лень пройтись по поиску "уязвимости Docker" - ваши проблемы.
:hi: ...Форточками пахнуло...
Аватар пользователя
Oleg65
Местный говорун
Местный говорун
 
Сообщений: 854
Стаж: 3 года 7 месяцев 1 день
Откуда: г.Коломна Моск.обл.
Благодарил (а): 71 раз.
Поблагодарили: 208 раз.

Re: Работа с контейнерами, установка docker.io в debian jess

Сообщение Oleg65 » 24 июн 2015, 17:22

Sunderland93 писал(а):

Oleg65 писал(а):

Sunderland93 писал(а):

Дырявое дерьмо этот докер
Объясните - почему? :? Хочется знать о "подводных" камнях :oops:

Потому что уязвимостей там дохрена, и ошибок в дизайне. За подробностями в гугл.
Заинтересовался, что же за беда с Докер... все подробности из Гугл (по совету). Так что же получил и какие выводы сделал:
- Да, в официальных репозиториях в шаблонах Докер полно уязвимостей!!! Но это еще не повод не пользоваться докер... Смотрим:
- как работает Докер:
Он состоит из слоёв. Первый слой(base image, директива FROM) — обычно ubuntu/debian/centos. Если у вас запущено несколько контейнеров с одинаковым base image, то при новом запуске контейнера докер делает следующие вещи:
1. Проверяет, что локальный base image имеет такой же хэш, как и тот, что в репозитории.
2. Если нет, тогда заново собирает слой, который имеет неверный хэш и все ниже.
3. Если да, тогда просто запускает из этого слоя.
Таким образом, для того, чтобы обновить ВСЕ приложения, запущенные на одном base image, вам нужно всего лишь перезапустить контейнеры. Даже apt-get install не придется делать. (Это при условии, что в base image стоит пропатченная либа.) Так как base image собирается в нормальных компаниях автоматически каждые определенные времени и сразу же после выпуска патча безопасности, то дыры после перезапуска контейнера уже не будет.
Если вы собираете свой base image, то можете сделать apt-get update и docker pull перед рестартом всех контейнеров.
К сведению: Докер образ для ubuntu собирают как раз ребята из canoncial. За основу берут cloud-версию убунты(емнип)!!!!
- Далее, мы не задумываясь качаем из сторонних реп. Не заботясь ни о какой безопасности и не сравнивая контрольные суммы. Почему мы считаем, что шаблон из сторонней репы без вложенного вредителя?
- Ну и самое главное: Большинство не умеет и не хочет уметь собрать свой контейнер! Вот Ваша безопасность!... в сделанном своими руками и мозгами.
- Ну и, кроме контейнеров, существуют еще и песочницы.
Выводы, ЛИЧНО МОИ:
1. "Если на небе зажигаются звезды, то это кому-нибудь нужно" Сен-Экзюпери. От меня: А уж если и существуют... то не зря.
2. Самая главная уязвимость любого ПО - ЭТО МЫ и НАША ЛЕНЬ ВНИКАТЬ В СМЫСЛ ПРОДУКТА и что-то изучать, что бы было СВОЕ мнение и суждение о продукте. ( В ядрах Линукс обнаруживается гораздо больше уязвимостей, так что - Линукс это "дырявое дерьмо"?
3. Отличие Линукс от "антипода" - это учится и сделать под себя, забыть Мелкософтовскую идеологию: "Скачал - не пошло, скорее всего это фигня, а не ПО. Настоящее сразу работает на моей машине."
Как тут не вспомнить выражение Булгаковского профессора Преображенского: "Следовательно, разруха не в клозетах, а в головах."...
Вот такое у меня сложилось мнение о Докер... :cry:
Аватар пользователя
Oleg65
Местный говорун
Местный говорун
 
Сообщений: 854
Стаж: 3 года 7 месяцев 1 день
Откуда: г.Коломна Моск.обл.
Благодарил (а): 71 раз.
Поблагодарили: 208 раз.


Вернуться в Установка программ

Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1

cron