Команда IT специалистов выполнит подготовку инфраструктуры для вашего бизнеса.
Внедрение самых передовых решений и технологий.
Поддержка и сопровождение ваших сервисов.
Выполнение работ под "ключ", от покупки сервера, до настройки автоматизации процессов.
8(977)608-78-62 adm@nixm.ru

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

Установка и настройка программ в Debian
Ответить
Аватара пользователя
nezabudka
Местный говорун
Местный говорун
Сообщения: 618
Зарегистрирован: 18 апр 2015, 06:13
Откуда: Ростов на Дону

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

Сообщение nezabudka »

Обрисуем со старта нашу задачу. Допустим нам нужна тестовая площадка
для работы в оболочке 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
[album]197[/album]
Остановить работу контейнера

Код: Выделить всё

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 адреса контейнера Теперь если мы выполним в контейнере следующие команды

Код: Выделить всё

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
Аватара пользователя
Oleg65
Местный говорун
Местный говорун
Сообщения: 859
Зарегистрирован: 18 янв 2015, 10:56
Откуда: г.Коломна Моск.обл.

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

Сообщение Oleg65 »

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

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

Сообщение Sunderland93 »

Oleg65 писал(а):
Sunderland93 писал(а):Дырявое дерьмо этот докер
Объясните - почему? :? Хочется знать о "подводных" камнях :oops:
Потому что уязвимостей там дохрена, и ошибок в дизайне. За подробностями в гугл.
Аватара пользователя
Oleg65
Местный говорун
Местный говорун
Сообщения: 859
Зарегистрирован: 18 янв 2015, 10:56
Откуда: г.Коломна Моск.обл.

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

Сообщение Oleg65 »

Sunderland93 писал(а):
Oleg65 писал(а):
Sunderland93 писал(а):Дырявое дерьмо этот докер
Объясните - почему? :? Хочется знать о "подводных" камнях :oops:
Потому что уязвимостей там дохрена, и ошибок в дизайне. За подробностями в гугл.
Достойный ответ :good: ! Спасибо, что напомнили про Goooogle! ЛОР - в стороне курит!
Sunderland93

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

Сообщение Sunderland93 »

Oleg65 писал(а):Достойный ответ :good: ! Спасибо, что напомнили про Goooogle! ЛОР - в стороне курит!
Может мне ещё прочитать за вас? Если лень пройтись по поиску "уязвимости Docker" - ваши проблемы.
Аватара пользователя
Oleg65
Местный говорун
Местный говорун
Сообщения: 859
Зарегистрирован: 18 янв 2015, 10:56
Откуда: г.Коломна Моск.обл.

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

Сообщение Oleg65 »

Sunderland93 писал(а):
Oleg65 писал(а):Достойный ответ :good: ! Спасибо, что напомнили про Goooogle! ЛОР - в стороне курит!
Может мне ещё прочитать за вас? Если лень пройтись по поиску "уязвимости Docker" - ваши проблемы.
:hi: ...Форточками пахнуло...
Аватара пользователя
Oleg65
Местный говорун
Местный говорун
Сообщения: 859
Зарегистрирован: 18 янв 2015, 10:56
Откуда: г.Коломна Моск.обл.

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

Сообщение Oleg65 »

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:
Ответить

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