vak: (Default)
[personal profile] vak
Одна из нетривиальных особенностей моей новой компании - что вся разработка идёт на маках. И это довольно удобно, как оказывается. Я больше десяти лет держу мак в качестве основного домашнего компа, так что дело привычное. Мак это очень качественный юникс, надёжный как топор. Все нужные для работы компоненты ставятся через "brew install", а в качестве IDE фирма предоставляет лицензию на CLion. Впрочем, и привычную связку Bash Commander + LE никто не отменял.

После внесения каждого изменения (git push) в облаке происходит автоматическая сборка проекта и прогон тестов. Конечно, сначала собираем и гоняем на локальной машине: Macbook Pro последней модели достаточно мощная машинка для этого. В облаке применяется технология контейнеров Docker. Я уже несколько лет про неё читаю в новостях, а тут она реально работает. Наконец-то идея виртуальных машин приносит практическую пользу.

Запишу коротенькую инструкцию, как установить Docker на мак и начать с ним играться.

(1) Устанавливаем Docker и его компоненты. Там ещё куча компонентов имеется, но мы начнём с минимума:
brew install docker
brew install docker-machine
(2) Устанавливаем VirtualBox, виртуальную машину, в которой Docker будет запускаться:
brew cask install virtualbox
Установка обломится по причине недостаточных прав доступа, что нормально:
Error: Failure while executing; `/usr/bin/sudo -E -- /usr/bin/env LOGNAME=vak USER=vak USERNAME=vak \
/usr/sbin/installer -pkg /usr/local/Caskroom/virtualbox/6.1.2,135662/VirtualBox.pkg \
-target / -applyChoiceChangesXML /var/folders/.../choices20200129-86935-1v43crh.xml` exited with 1.
Чтобы разрешить для VirtualBox установку расширений ядра Unix, зайдите в System Preferences / Security & Privacy и на вкладке General откройте доступ для приложения Oracle VM VirtualBox. После этого повторите "brew cask install virtualbox" - установка пройдёт как надо.

(3) Создаём виртуальную машину для Docker. Можно иметь много машин для разных целей.
docker-machine create default
(4) Запускаем виртуальную машину.
$ docker-machine start
Starting "default"...
(default) Check network to re-create if needed...
(default) Waiting for an IP...
Machine "default" was started.
Waiting for SSH to be available...
Detecting the provisioner...
Started machines may have new IP addresses. You may need to re-run the `docker-machine env` command.
(5) Проверяем конфигурацию получившейся машины Docker:
$ docker-machine env default
export DOCKER_TLS_VERIFY="1"
export DOCKER_HOST="tcp://192.168.99.100:2376"
export DOCKER_CERT_PATH="/Users/vak/.docker/machine/machines/default"
export DOCKER_MACHINE_NAME="default"
(6) Устанавливаем переменные окружения для подключения к этой машине.
eval $(docker-machine env default)
(7) Для проверки запускаем контейнер "hello-world". Бинарный образ hello-world будет скачан из сети:
$ docker run hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
1b930d010525: Pull complete
Digest: sha256:9572f7cdcee8591948c2963463447a53466950b3fc15a247fcad1917ca215a2f
Status: Downloaded newer image for hello-world:latest

Hello from Docker!
This message shows that your installation appears to be working correctly.
(8) Пробуем чуть более сложный контейнер с минимальным линуксом Ubuntu:
$ docker run -it ubuntu
root@3765047bde61:/# df
Filesystem 1K-blocks Used Available Use% Mounted on
overlay 18714000 411036 17313836 3% /
tmpfs 65536 0 65536 0% /dev
tmpfs 506608 0 506608 0% /sys/fs/cgroup
shm 65536 0 65536 0% /dev/shm
/dev/sda1 18714000 411036 17313836 3% /etc/hosts
tmpfs 506608 0 506608 0% /proc/asound
tmpfs 506608 0 506608 0% /proc/acpi
tmpfs 506608 0 506608 0% /proc/scsi
tmpfs 506608 0 506608 0% /sys/firmware
root@3765047bde61:/# free
total used free shared buff/cache available
Mem: 1013220 83588 193948 290552 735684 640852
Swap: 1195712 0 1195712
root@3765047bde61:/# uname -a
Linux 3765047bde61 4.14.154-boot2docker #1 SMP Thu Nov 14 19:19:08 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux
root@3765047bde61:/# _
(9) Смотрим список получившихся образов Docker:
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu latest ccc6e87d482b 13 days ago 64.2MB
hello-world latest fce289e99eb9 13 months ago 1.84kB
Суть всех этих действий в том, что мы получаем автономную виртуальную машину Linux (или много разных машин), в которых можем устанавливать нужные компиляторы и прочий софт, и вести разработку или гонять тесты.
From: [personal profile] bowhill
Установка обломится по причине недостаточных прав доступа, что нормально... Чтобы разрешить для VirtualBox установку расширений ядра Unix, зайдите в System Preferences / Security & Privacy и на вкладке General откройте доступ для приложения Oracle VM VirtualBox. После этого повторите "brew cask install virtualbox" - установка пройдёт нормально.


Это не unix, не качественный юникс.

Date: 2020-01-30 23:59 (UTC)
From: [personal profile] bowhill
Я бы сказал, что продуманная система администрирования, помимо прочего, позволяет автоматизировать работу администратора. Также, администрирование системы, вероятно, должно выполняться администратором (из учётной записи администратора). То, что установка системных программ из под любой учётки есть способ противодействия malware — согласиться пока не готов.

Понятно, что для комфортного Мака здесь должен, просто обязан быть компромисс, но не обязательно именно такой.

Date: 2020-01-30 23:11 (UTC)
juan_gandhi: (Default)
From: [personal profile] juan_gandhi
О как классно. Поставлю сердечко. У меня, правда, хоть и есть, да я не пользуюсь. Но пригодица.

Date: 2020-01-31 01:44 (UTC)
volodki: (Default)
From: [personal profile] volodki
Если сталкивались - как там с эффективностью обработки значительного сетевого трафика? Или пока все еще разница с железом значительна?

Date: 2020-01-31 03:56 (UTC)
volodki: (Default)
From: [personal profile] volodki
Интересен момент, насколько. Раньше было в разы.

Date: 2020-01-31 05:32 (UTC)
mikerrr: (Default)
From: [personal profile] mikerrr
Докер очень помогает в борьбе с CUDA и Tensorflow.
Фиг подберешь правильные версии всего этого... а тут бац - контейнер готовый:) очень удобно.

Date: 2020-02-10 10:18 (UTC)
kondybas: (Default)
From: [personal profile] kondybas
Странно, я думал для разраба виртуализация мастхэв, а оно вот оно как. Аж только теперь...

Я как-то исторически прилип к вмварежке, она мне стопицот лет жизни сэкономила.
OSZAR »