LINUX.ORG.RU

Создание докер контейнера из собственной ОС.

 , ,


1

1

В общем у меня 24 fedora, и куча собственных пакетов, собранных из исходников, какой самый простой и быстрый способ из работающей ос сделать контейнер?образ 24 fedor'ы на гитхабе видел, но он старьё адовое, как проще всего разделить систему на 5-6 образов и эксперементировать? особенно если в json я нуб полный.

docker кагбе не для этого, тебе проще dd-хнуть твой хард в файл и запустить виртуалку в kvm.

King_Carlo ★★★★★
()

особенно если в json я нуб полный

Можешь объяснить, при чем здесь json, как можно быть нубом в {a : b} и что именно ты не можешь сделать?

cdshines ★★★★★
()

какой самый простой и быстрый способ из работающей ос сделать контейнер?

LXC. Просто задействовать содержимое как rootfs.

Как было сказано выше, Docker, хотя и может выполнить ту же задачу, но он больше ориентирован на другое.

KRoN73 ★★★★★
()
Ответ на: комментарий от King_Carlo

в том то и дело, что kvm не то, и тим лид программистов дал задачу, из того что я сейчас у себя настроил и создал сделать несколько контейнеров в докере.

erzentddd
() автор топика
Ответ на: комментарий от erzentddd

Экий он затейник, ваш тимлид )) Докер, я так понимаю, потому, что модно, стильно, молодёжно, другого объяснения у меня нет.

King_Carlo ★★★★★
()
Ответ на: комментарий от KRoN73

ну вот у меня btrfs, докер использует её же вместо aufs. У меня есть самба, есть к ней приблуды из этого один контейнер, есть собственные 2 приложухи компании, им по контейнеру, есть задача пассивного характера сделать удобные к использованию при установке варианты vim/emacs, есть ещё пара задач. Как сказал руководитель, под эти задачи хорошо подходит docker. Осталось понять, как проще создавать контейнеры из системы, без конфига в лист А4 в формате json.

erzentddd
() автор топика
Ответ на: комментарий от King_Carlo

кстати, про модно стильно молодёжно, ты прав.

erzentddd
() автор топика

Наткнулся тут на свежую книгу, буквально месяц назад вышла: «Using Docker» от Adrian Mouat. В сети имеется, может быть поможет.

gh0stwizard ★★★★★
()
Ответ на: комментарий от gh0stwizard

у меня неделя, чтобы задачу с доменом проверить и по нескольким вариантам отчёт сделать, боюсь я с книгой сроки сильно затяну. Я сегодня некоторые его плюшки чтобы понять, как идиот читал документацию по 5 раз, потому что с первого понимал не всё, и начиная писать команды, снова возвращался к доке.... докер с готовыми образами тема прикольная, даже удобная во многом, но будучи дураком не умеющим читать документацию наискосок и сразу во всё врубаться, время быстро летит.

erzentddd
() автор топика
Ответ на: комментарий от erzentddd

у меня неделя, чтобы задачу с доменом проверить

Ты либо становишься профи по докеру, либо можешь «списать» у коллег.

gh0stwizard ★★★★★
()
Ответ на: комментарий от erzentddd

Наверное он имел в виду что нужно сделать то же самое, только в виде Dockerfile.

Скопировать готовенькое не получится, придется повторить все что ты «создал и настроил».

redixin ★★★★
()
Ответ на: комментарий от erzentddd

Вот, что я нарыл: https://docs.docker.com/engine/userguide/dockerimages/ и https://www.digitalocean.com/community/tutorials/docker-explained-using-docke...

В Dockerfile тебе нужно прописать нечто такое:

# Set the base image to Ubuntu
FROM ubuntu

# copy package into docker filesystem
ADD /mypackage.tar.gz /package.tar.gz

# extract package to build a docker image
RUN tar xzfv /package.tar.gz

# допустим package.tar.gz содержит монгу
# ниже копипаста чтобы запустить mongod на порту 27017
# первая комманда открывает порт для докера
# вторая это аргумент для mongod
# третья это запуск

# Expose the default port
EXPOSE 27017

# Default port to execute the entrypoint (MongoDB)
CMD ["--port 27017"]

# Set default container command
ENTRYPOINT usr/bin/mongod
Ничего сложного, имхо. Далее sudo docker build -t my_mongodb . (копипаста).

Если тебе нужно создавать именно пакеты, то по идее образ для докера должен быть как твоя федора. Т.к. собирать софт на федоре с его хаками для libnss, libfreebl3 и прочих либ — ССЗБ, часть либ в других дистрах просто отсутсвуют, они даже не нужны для приложения, но в федорке все сделано грамотно... Рекомендую дистр для сборок: дебиан (wheezy).

P.S. Зря удалил пост про checkinstall: с помощью него можно делать архивы прог, в том числе и в виде tar.gz

gh0stwizard ★★★★★
()
Последнее исправление: gh0stwizard (всего исправлений: 2)
Ответ на: комментарий от redixin

Скопировать готовенькое не получится, придется повторить все что ты «создал и настроил».

Зачем? Выкладываешь все собранное на github, а в Dockerfile должна быть строчка на синхронизацию из хранилища (git clone ...). Разраб лишь делает push'ы в хранилище, а чел который рулит докером просто (пере-)запускает когда надо. В этом весь смысл, нет?

Вместо github сойдут архивы, собранные пакеты конкретного дистра и т.п. Главное, чтобы совпадали системы. И синхронизировать через curl (wget) и т.п.

gh0stwizard ★★★★★
()
Ответ на: комментарий от erzentddd

Дока к докеру на полдня чтения, еще пару дней на эксперименты.

Риал тру докер вэй – разнести все свои сервисы (самбы, базы, веб-сервера) по отдельным контейнерам, в каждом контейнере entrypoint – бинарник сервера или небольшая обвязка на shell-скрипте.

Виртуалка вэй – воткнуть все сервисы в один контейнер, тогда в Dockerfile пишешь инструкцию по установке всех нужных пакетов, прокидываешь им конфиги, а entrypoint – скрипт-пускалка всего это хозяйства. Hint: если решишь запускать сервисы через systemd, огребешь еще костылей на пару дней.

staseg ★★★★★
()
Ответ на: комментарий от erzentddd

вот 93.7% что он хочет видеть от тебя Dockerfile (скрипт по которому кто угодно может собрать такую (хахаха) систему как у тебя).

qnikst ★★★★★
()

Докер контейнер он для того, чтобы запускать один (!) процесс (одну работающую программу) из всего набора твоих пакетов. Ты инструмент себе не тот под задачу ищешь. Тебе нужно запускать копию твоей десктопной оси на какой-нибудь VDS типа DigitalOcean?

menangen ★★★★★
()

привет. почитай здесь http://www.hdfilm.kz/coreos/docker-base-tools/

я создаю контейнер используя скрипт

https://raw.githubusercontent.com/docker/docker/master/contrib/mkimage-yum.sh

затем этот контейнер делаю базовым, коммит, и уже все остальные контейнеры строю на его базе.

профит - в контейнерах основа центос, не люблю дебиан.

Nurmukh ★★★
()
Ответ на: комментарий от menangen

Докер контейнер он для того, чтобы запускать один (!) процесс

Всё же, одно типовое приложение. Процессов в нём может быть и много :) Главное, что от пользователя скрыта реализация.

KRoN73 ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.