12 дней до каникул: продолжаю изучать докер

Вчера принимал гостей. На это ушла вся суббота. Было весело. Поели пиццу, обпились лимонадами, отремонтировал привезённый комп (всего-то заменил питальник), наигрался в Майнкрафт. В общем, мне понравилось. А потом читал книгу до 4 утра.

Сегодня поднялся аки зомби по осени. Раскачивался до 16:00, а потом вспомнил, что хотел освоить Docker. Но осваивать его просто-так, это не мой метод. Нужно добиться какого-нибудь результата. Вот только какого?

Пусть результатом будет ярлычок на рабочем столе. При запуске должен открываться Миднайт Коммандер, который имеет доступ всего к одной папке на диске C. Если получится, то я молодец и имею право поваляться в ванной с книгой и какими-нибудь ароматными добавками.

Погнали!

Для начала создаю папку проекта (#MC) а, в ней папку data. Коммандер будет иметь доступ к папке data (и к файловой системе контейнера).
В папке проекта создаю CMD-файл — start.cmd

Будем считать, что подготовка завершена. Докер у меня уже установлен (напоминаю, что для него нужен либо какой-нибудь линукс, либо Windows 10 Pro или дороже). Образ Убунту 18 скачал позавчера (командой docker pull ubuntu:18.10). Ссылка на пятничный пост.

Открываю start.cmd на редактирование и вписываю две команды: команду docker run -it —rm ubuntu:18.10 /bin/bash

Добавляю pause, чтобы консоль не закрывалась сразу, и…

Внезапно оказалось, что Докера у меня нет. Вчера был, а сегодня исчез. Помню, что он хотел обновиться, и я ему позволил это сделать. Вероятно, что-то пошло не так.
Качаю Docker Desktop Installer.exe отсюда, и устанавливаю заново. Перезагрузился, работает.

Снова запускаю start.cmd и вижу консоль. Ввожу в консоль exit. Вижу, что новый контейнер исчез из списка. Отлично.

Вот теперь можно сделать задуманное.

Создаю файл Dockerfile в папке проекта (#MC) и размещаю в нём всего три команды:

#В качестве исходного образа беру Ubuntu 18.04 (её образ уже скачан и доступен по команде docker images)
FROM ubuntu:18.04
#Указываю рабочую папку контейнера, в которую мы попадём при его старте
WORKDIR /var/www/html
#Запускаю обновление системы и установку курла (вдруг понадобится и миднайт коммандера - mc)
RUN apt-get update && apt-get upgrade -y && apt-get install -y mc && apt-get install -y wget curl

Теперь захожу в папку #MC из консоли и создаю себе новый образ командой: docker build . —tag midnight_commander

Теперь открываю start.cmd и вписываю туда всего две команды:

cd C:\#MC\
docker run -it --rm -v C:\#MC\data:/var/www/html midnight_commander mc

Очень просто, не так-ли?

Перевожу на человеческий.

docker — Это я говорю: Слыш, Докер! Сделай ка мне вот что…

run — запусти контейнер

-it — и не закрывай консоль до тех пор пока я не введу там команду exit

—rm — когда я её введу — удали контейнер

-v C:\#MC\data:/var/www/html — расшарь контейнеру папку C:\#MC\data и пусть её содержимое в самом контейнере будет находиться в /var/www/html

midnight_commander — сам контейнер создай из образа «midnight_commander» (который создавался командой build, выше по тексту)

mc — А когда контейнер стартует, введи в его консоли команду mc (чтобы стартовал Миднайт Коммандер)

Надеюсь излагаю более-менее понятно? Главное, самому не забыть.

Запускаю start.cmd и… Ура!

Осталось создать ярлык для start.cmd и выложить его на рабочий стол.

Для этого, кликаю правой кнопкой мыши по start.cmd, выбираю пункт выпадающего меню «Создать ярлык», переименовываю ярлык в MC.lnk (или просто в MC, если отображение расширений отключено), переношу на рабочий стол.

Ну… выглядит как-то… не очень.

Жму по ярлыку правой кнопкой мыши и в контекстном меню выбираю «Свойства».

Там есть кнопка «Сменить значок». Клацаю её и выбираю значок поинтереснее. Вот теперь норм.

Проверяю. Работает! Ура, товарищи.

Коммандер видит файлы в расшаренной папке, и может их удалять/менять. Т.е. всё так как и планировалось, а это значит… Тирлим-пом-пом, тирлим-пом-пом, а я иду купаться!

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

Интересно, а «иксы» таким манером можно запустить из докера?

Только что было 17:30 и вдруг 20:31. За это время успел накупаться, выгулять пёселя и обсудить произведение Лермонтова («Песня о купце Калашникове») вместе с М. В школе оно казалось странным и нелогичным, но когда делаешь поправку на век, личность автора и его годы ждизни, становится жутко.

Лермонтову удалось в довольно кратких (что не характерно для того времени) фразах и предложениях передать просто кошмарную историю.

Калашников был обречён с того момента, как Кирибеевич положил глаз на его жену. Если бы он не сделал то что сделал, всё кончилось бы гораздо хуже, чем в этой истории. Его был в любом случае убрали. Жену уже никто не звал бы замуж, а просто использовал как хотел. Про детей вообще молчу. В те времена у них было не так уж много вариантов.
Купец и честь семьи защитил, и оплатил эту защиту своею жизнью.

Вот только не понимаю, для чего такие произведения изучать в школе? Мне кажется, это способ спрятать что-то на видном месте. Всем кажется что они видели и читали, а на самом деле — нет.

А со временем творится какая-то дичь. Оно явно течёт нелинейно.

Ну вот! Опять! На часах 00:07. А я всего-то немножко почитал про ООП и базы данных. Срочно чистить зубы и спать. I’m OFF.

=== Заметки ===

Ночью надо спать. Выключай смартфон. Сейчас!

Пришло время носить очки во время чтения))
#очкарик

Как превратить работу в увлекательную игру? Кто-нибудь пробовал? Как успехи?

Ещё...

Напишите комментарий

Введите имя

Введите адрес электронной почты

Введите адрес вашего сайта

Нажмите эту кнопку, чтобы отправить комментарий.

Введите текст комментария