← All posts tagged docker

а как в этих ваших докерах правильно оргранизовывать обновление,
вот например грутится у меня на digitalocean quassel-core, вот как сделать
так чтобы этот образ периодически обновлялся?

Есть несколько разных базовых образов, хочется в них добавить общий кусок, как это принято в докере решать, копипастом в докерфайле?

a JSON encoded value of the filters (a map[string][]string) to process on the containers list. Available filters:

exited=<int>; – containers with exit code of <int> ;
status=(restarting|running|paused|exited)
label=key or label="key=value" of a container label

а как пример этого JSON encoded value of map[string][]string выглядит то хоть?

в docker при добавлении --cap-add=NET_ADMIN в контейнере не создается, tun устройство, только если запускать с --privileged (который вроде deprecated). Как тут правильно поступать, особо интересует как правильно поступать используя докер через rest-api где privileged вообще не видно

а какого черта докер (с btrfs) жрет оперативку даже остановленными контейнерами.
Т.е. у меня в docker ps -a видна пачка остановленных контейнеров, если я их прибиваю через `docker rm` то у меня радостно освобождается пара гигов памяти..

а почому strace в докер конейнере может ругаться на:

strace: test_ptrace_setoptions_for_all: PTRACE_TRACEME doesn't work: Permission denied

и как это исправлять, в системе selinux нет, apparmor вроде есть.
На хосте все работает.

Есть докер файл, в нём:

COPY my-project.cabal /opt/server
RUN cd /opt/server && cabal install --dependencies-only

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

Теперь я хочу разбить проект на куски и радостно собирать его stack-ом, но тут возникает засада, ту же самую фишку я уже провернуть не могу, т.к. просто install --dependencies-only там уже нету.

Что делать?

При создании докер контейнера мне нужно его настроить, для этого нужно запустить процесс, и выполнить n-команд пока он работает один раз. Потом в работающем контейнере запускать будет уже supervisord.

Вопрос, как это сделать, шел скриптом, который в фоне запустит программу, потом остальные скрипты и в конце прибьёт программу?

У меня есть докерфайл, в котором делается:

RUN git clone git@github.com:orgname/proect.git

сам этот докерфайл лежит в этом самом проекте.
Когда данная штука собирается CI и все работает хорошо.

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

Вопрос, как бы адекватно сделать выбор или качать из гита, или брать из окружения где запускается докер?

а как создать такой же комадный интерфейс, который создает докер руками

```
6: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default 
    link/ether 56:84:7a:fe:97:99 brd ff:ff:ff:ff:ff:ff
    inet 172.17.42.1/16 scope global docker0
       valid_lft forever preferred_lft forever
```

Проблема в следующем, я хочу, чтобы докер создавал listen сокет на этом интерфейсе, т.к. это позволяет изнутри контейнеров управлять докером, а пробрасывать unix socket в контейнеры мне лень.

Если я запускаю докер без "-H 172.17.42.1:5555" то он создает интерфейс, а при выключении не подчищает, поэтому вторым запуском я могу запустить докер с "-H 172.17.42.1:5555" и все будет работать. Но т.к. все в инитскриптах и менять руками настройки мне не хочется, поэтому я хочу создание интерфейса вытащить в start_pre и запускаться сразу с нужной опцией.

А возможно ли в докере следующее, пусть у меня есть образ из 3 слоёв:

1 — базовая ось и рантайм зависимости моего проекта
2 — компиляторы, прочие билд-тулзы
3 — мой проект

за загружаю 3 и ковыряю устанавливаю свой проект, и сохраняю образ, теперь я хочу его отдать заказчику, естественно выкинув слои 2 и 3. Т.е. оставляя только базовую ось, рантайм зависимости и установленый проект.

такое возможно?

сначала я хотел написать политоту про людей не умеющих с неклассической логикой.. но передумал, будет про docker, все равно логика там тоже странная

есть docker и имадж, я его пускаю через docker run -v localdir:remotedir /bin/bash
и оказываюсь там рутом, соотв все создаваемые файлики в remotedir оказываются и в localdir, но рутовыми, а я хочу чтобы они были от того пользователя, что запустил docker run.

Я знаю как это сделать из баша и echo + unshare и setns, но в отличии от предыдущего вопроса про bash и повышение привелегий, где мне для этого посоветовали докер, тут я к нему уже привязан.

вопрос, как наверняка же есть возможность как это сделать?