LK4D4math

16 мая 2016, Worldwide

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

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

12:57

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

12:59

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

13:01

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

13:04

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

13:06

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

23:26

# Вторник 31 твит

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

12:53

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

12:57

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

13:07

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

13:08

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

13:11

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

13:29

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

13:31

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

13:32

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

13:32

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

13:35

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

13:38

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

13:40

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

13:41

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

14:05

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

14:06

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

14:09

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

14:10

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

14:14

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

14:18

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

14:20

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

14:22

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

14:23

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

14:24

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

14:25

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

14:28

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

14:31

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

14:34

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

14:35

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

14:36

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

14:40

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

14:47

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

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

13:44

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

13:58

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

14:39

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

14:51

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

15:30

@backendsecret Мой shell это zsh.

15:31

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

15:33

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

15:34

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

15:34

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

15:48

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

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

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

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

15:37

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

15:37

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

15:40

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

15:41

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

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

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

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

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

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

18:19

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

18:22

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

18:23

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

22:08

github.com

other