LK4D4math

16 мая 2016, Worldwide

# Понедельник 5 твитов

Всем привет. Меня зовут Саша, я работаю в компании @docker уже почти 2 года и на этой неделе веду этот твиттер.

15:57

Я сейчас нахожусь в городе Остин, где будет проходить конференция OSCON. Если вы тоже там, то приходите завтра в будку докера - поболтаем.

15:59

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

16:01

Если вам нужен docker4mac, то подписывайтесь на beta.docker.com и шлите мне ваш dockerID на lk4d4(at)docker.com

16:04

Ну и перед тем как отправиться в дебри Техаса скажу, что 100% времени я пишу на языке Go :)

16:06

# Вторник 32 твита

Больше обо мне можно узнать из интервью @GolangShow golangshow.com/episode/2015/0… и @KSDaemon sdcast.ksdaemon.ru/2016/02/sdcast…

2:26

Пришёл на OSCON pic.twitter.com/Kp1KHXrgvt

15:53

Хаскелисты не забыты pic.twitter.com/CtYoNdm5U9

15:57

Все собирают свои будки, слева Microsoft pic.twitter.com/pve7ga5NQV

16:07

Будка гитхаба в виде контейнера - подозрительно pic.twitter.com/XoKxXhzsmj

16:08

А будка докера не в форме контейнера pic.twitter.com/fwk48YJLmC

16:11

Ну что ж постараемся начать более техническую часть. Немного расскажу про github.com/docker/docker

16:29

Долгое время docker был одним исполняемым файлом. Он почти на 100% написан на Go.

16:31

Исключение составляет хак для вхождения в существующие linux namespaces: github.com/opencontainers…

16:32

Сейчас докер состоит из 5 исполняемых файлов

16:32

1. Основной демон - github.com/docker/docker/…

16:35

3. Демон для запуска контейнеров - github.com/docker/contain…

16:38

4. Прослойка для поддержания контейнеров пока демоны мертвы - github.com/docker/contain…

16:40

5. Исполняемый файл, который собственно запускает контейнер - github.com/opencontainers…

16:41

Меня тут отвлекли на перенос какой-то коробки. Но вкратце все в докере написано на Go.

17:05

Краткое включение с OSCON pic.twitter.com/lGo33Kn5X9

17:06

Go довольно быстрый и простой язык со сборкой мусора. Я еще не встречал языков на которых так легко писать.

17:09

И что немаловажно Go очень легко читать. Особенно это важно для opensource проектов.

17:10

Есть ограниченный набор вещей, которые в Go сложнее сделать, чем в C(fork, setns), но для 99.99% задач он подходит очень хорошо.

17:14

Ну ладно, спою дифирамбы Go попозже. Расскажу немного про контейнеры.

17:18

Контейнеры в Linux состоят из трех частей.

17:20

1. Изоляция - Linux namespaces
Сейчас можно изолировать сеть, юзеров, хостнейм, маунты и прочее, больше здесь man7.org/linux/man-page…

17:22

2. Ограничение действий - Linux capabilities, apparmor/selinux, seccomp. Все это довольно гибкие механизмы ограничения действий.

17:23

Capabilities man7.org/linux/man-page… здесь все просто - каждый CAP отвечает за некоторый набор действий.

17:24

Apparmor и SELinux это системы безопасности от Canonical и RedHat. Для них можно писать более сложные правила.

17:25

Seccomp man7.org/linux/man-page… - позволяет фильтровать syscalls и аргументы к ним. Очень эффективная и гибкая система.

17:28

3. Ограничение ресурсов - Linux cgroups man7.org/linux/man-page… . Память, CPU и прочее.

17:31

Все это дело поддерживается докером конечно же.

17:34

Про linux namespaces в Go вы можете найти в моих постах lk4d4.darth.io/categories/nam…

17:35

Существуют и другие системы контейнеризации помимо докера. LXC и LXD на C от компании Canonical, rkt на Go от CoreOS например.

17:36

Есть очень крутая система контейнеров на Rust - github.com/tailhook/vagga

17:40

Кстати докер поддерживает еще и нативные контейнеры windows, которые выйдут позже в этом году msdn.microsoft.com/en-us/virtuali…

17:47

# Среда 12 твитов

У nginx на OSCON клёвые футболки со штатом Техас pic.twitter.com/9Bh7IYYFfQ

16:44

Гошная подушка жутковата pic.twitter.com/TiUymTrdSO

16:58

С подачи @M0sth8 пробуем facebook.github.io/reason/

17:39

Штука на которой построен docker4mac github.com/docker/hyperkit

17:51

Немного про то, где я пишу код
Я использую Gentoo Linux с unstable пакетами.

18:30

@backendsecret Мой shell это zsh.

18:31

Мой window manager это dwm, в нем я открываю терминал st(suckless terminal), где открывается tmux c уже упомянутым zsh.

18:33

Там уже я открываю vim, где пишу код :) Рекомендую плагин vim-go для него.

18:34

Мои конфиги можно найти здесь - github.com/LK4D4/dotfiles

18:34

Суперкрутая 9p библиотека для Go github.com/docker/go-p9p

18:48

Простейшие контейнеры на Go github.com/LK4D4/unc

19:42
Немного чтива pic.twitter.com/lv1W6r6Gyo
22:20

# Четверг 8 твитов

Здесь вы можете увидеть трюк для запуска кода в однопоточном окружении в go github.com/opencontainers…
Это называется C constructor :)

18:37

Идея в том, что этот код запускается перед инициализацией кода рантайма.

18:37

Есть еще волшебное место в стандартной библиотеке, где код запускается в однопоточном окружении golang.org/src/syscall/ex…

18:40

Этот код исполняется при использовании exec.Cmd

18:41

Docker на OSCON. pic.twitter.com/QTMVgMHt1M

19:00
Weekly #golang report github.com/LK4D4/report/b…
etcd probably just merged something big :)
20:05
Через 20 минут начинаем запись 57го эпизода @GolangShow. Трансляция тут golangshow.com/online/
20:07

# Пятница 2 твита

@solomonstre @vieux First Docker PR accepted. :-) Thanks @LK4D4math!
17:08
@LK4D4math Thanks for your help today with my first docker PR!
17:08

# Суббота 3 твита

Пример tcp proxy на Go github.com/docker/docker/…

21:19

Пример pubsub на Go github.com/docker/docker/…

21:22

Поиск по префиксам на Go github.com/docker/docker/…

21:23

# Воскресенье 1 твит

Только что дочитал книжку "An astronaut's guide to life on Earth". Очень круто, всем рекомендую.

1:08

github.com

other