<?xml version="1.0" encoding="utf-8"?> 
<rss version="2.0"
  xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd"
  xmlns:atom="http://www.w3.org/2005/Atom">

<channel>

<title>M9K blog: заметки с тегом docker</title>
<link>https://blog.m9k.space/tags/docker/</link>
<description>Заметки обо всём: devops, lifestyle, культура.</description>
<author>M</author>
<language>ru</language>
<generator>E2 (v3877; Aegea)</generator>

<itunes:owner>
<itunes:name>M</itunes:name>
<itunes:email></itunes:email>
</itunes:owner>
<itunes:subtitle>Заметки обо всём: devops, lifestyle, культура.</itunes:subtitle>
<itunes:image href="" />
<itunes:explicit></itunes:explicit>

<item>
<title>CouchDB, Debian, AstraLinux, Docker и все-все-все</title>
<guid isPermaLink="false">201</guid>
<link>https://blog.m9k.space/all/skreschivaem-uzha-i-ezha/</link>
<pubDate>Thu, 14 Aug 2025 10:40:09 +0000</pubDate>
<author>M</author>
<comments>https://blog.m9k.space/all/skreschivaem-uzha-i-ezha/</comments>
<description>
&lt;p&gt;Возникла необходимость запустить Couchdb в контейнере, где базовая ось (и базовые же пакеты) должны быть очень-очень свежими, в противной случай контейнер не проходит встроенную проверку на безопасность.&lt;br /&gt;
Стандартный официальный образ собран на базе Debian 12.&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;FROM debian:bookworm-slim&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Простая замена базового образа на&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;FROM debian:trixie-slim&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;приводит к тому, что контейнер не собирается по зависимостям.&lt;br /&gt;
Смотрим официальную репу в части зависимостей и видим прекрасное — libmozjs-78-0 (&gt;= 78.15.0). Пробуем ставить свежую версию, которая есть в репах — не помогает, пакет couchdb принципиально требует libmozjs-78-0.&lt;/p&gt;
&lt;p&gt;Ок, скрещиваем ежа и ужа.&lt;/p&gt;
&lt;p&gt;У debian есть механизм apt-pinning. Это механизм, позволяющий задать приоритеты для версий пакетов из разных источников (репозиториев, release-веток, PPA), чтобы фиксировать версию, запрещать обновление или предпочитать конкретный источник.&lt;/p&gt;
&lt;p&gt;Коротко приоритеты делятся на:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt; 0 — никогда не устанавливать.&lt;/li&gt;
&lt;li&gt;1..99 — ставить только при явном указании версии.&lt;/li&gt;
&lt;li&gt;100 — приоритет уже установленной версии.&lt;/li&gt;
&lt;li&gt;500 — дефолт для неприоритетных источников.&lt;/li&gt;
&lt;li&gt;990 — приоритет для целевого релиза (-t), либо если явно указан release.&lt;/li&gt;
&lt;li&gt;&gt;1000 — разрешает понижение версии (downgrade) к закреплённой.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Добавляет в наш Dockerfile:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;RUN echo &amp;quot;deb http://deb.debian.org/debian bookworm main&amp;quot; &amp;gt; /etc/apt/sources.list.d/bookworm.list &amp;amp;&amp;amp; \
    echo &amp;quot;Package: *\nPin: release n=bookworm\nPin-Priority: 500&amp;quot; &amp;gt; /etc/apt/preferences.d/bookworm &amp;amp;&amp;amp; \
    echo &amp;quot;Package: *\nPin: release n=trixie\nPin-Priority: 600&amp;quot; &amp;gt; /etc/apt/preferences.d/trixie &amp;amp;&amp;amp; \
    echo &amp;quot;deb [signed-by=/usr/share/keyrings/couchdb-archive-keyring.gpg] https://apache.jfrog.io/artifactory/couchdb-deb/ bookworm main&amp;quot; \
            &amp;gt; /etc/apt/sources.list.d/couchdb.list &amp;amp;&amp;amp; \
    apt-get update&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Основная часть пакетов ставится из свежей репы, часть, которых в ней нет — из старых.&lt;/p&gt;
</description>
</item>

<item>
<title>Multistage Docker — как пересобирать без кэша не весь Dockefile</title>
<guid isPermaLink="false">197</guid>
<link>https://blog.m9k.space/all/multistage-docker-kak-peresobirat-bez-kesha-ne-ves-dockefile/</link>
<pubDate>Tue, 05 Aug 2025 08:47:54 +0000</pubDate>
<author>M</author>
<comments>https://blog.m9k.space/all/multistage-docker-kak-peresobirat-bez-kesha-ne-ves-dockefile/</comments>
<description>
&lt;p&gt;Возникла необходимость пересобрать отдельный stage-контейнер из Dockerfile. Первый собранный контейнер — это контейнер сборки OpenSSL, который выполняется очень, очень долго. Для того, чтоб сэкономить время, во вторую часть добавляем:&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;# Stage 1: OpenSSL-сборка (пусть останется закешированной)
FROM debian:bookworm AS openssl-build
# ... 
# Stage 2: основная
FROM debian:bookworm-slim
# Аргумент, чтобы инвалидировать кэш
ARG CACHE_BREAKER=default
# Используем его в ENV, чтобы Docker счёл слой новым
ENV CACHE_BREAKER=${CACHE_BREAKER}&lt;/code&gt;&lt;/pre&gt;</description>
</item>

<item>
<title>Old Apache Kafka + ZooKeeper + Clickhouse in Docker</title>
<guid isPermaLink="false">150</guid>
<link>https://blog.m9k.space/all/old-apache-kafka-zookeeper-clickhouse-in-docker/</link>
<pubDate>Thu, 02 Nov 2023 07:52:07 +0000</pubDate>
<author>M</author>
<comments>https://blog.m9k.space/all/old-apache-kafka-zookeeper-clickhouse-in-docker/</comments>
<description>
&lt;p&gt;&lt;i&gt;docker-compose.yml&lt;/i&gt;&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;version: '3.5'
services:
  kafka:
    image: bitnami/kafka:2.6.0
    ports:
      - &amp;quot;9092:9092&amp;quot;
    environment:
      - KAFKA_BROKER_ID=1
      - KAFKA_LISTENERS=PLAINTEXT://:9092
      - KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://172.23.0.13:9092
      - KAFKA_ZOOKEEPER_CONNECT=zookeeper:2181
      - ALLOW_PLAINTEXT_LISTENER=yes
    depends_on:
      - zookeeper
    networks:
      clickhouse-network:
        ipv4_address: 172.23.0.13
  zookeeper:
    image: zookeeper:3.5.8
    container_name: zookeeper
    hostname: zookeeper
    ports:
      - &amp;quot;2181:2181&amp;quot;
    environment:
      - ALLOW_ANONYMOUS_LOGIN=yes
    networks:
      clickhouse-network:
        ipv4_address: 172.23.0.10
  clickhouse01:
    image: yandex/clickhouse-server:20.8.12.2
    container_name: clickhouse01
    hostname: clickhouse01
    networks:
      clickhouse-network:
        ipv4_address: 172.23.0.11
    ports:
      - &amp;quot;127.0.0.1:8123:8123&amp;quot;
      - &amp;quot;127.0.0.1:9000:9000&amp;quot;
    volumes:
      - ${PWD}/clickhouse01:/etc/clickhouse-server
      - /mnt/volume/clickhouse01/data:/var/lib/clickhouse/
      - /mnt/volume/clickhouse01/logs:/var/log/clickhouse-server/
    depends_on:
      - zookeeper
  clickhouse02:
    image: yandex/clickhouse-server:20.8.12.2
    container_name: clickhouse02
    hostname: clickhouse02
    networks:
      clickhouse-network:
        ipv4_address: 172.23.0.12
    volumes:
      - ${PWD}/clickhouse02:/etc/clickhouse-server
      - /mnt/volume/clickhouse02/data:/var/lib/clickhouse/
      - /mnt/volume/clickhouse02/logs:/var/log/clickhouse-server/
    depends_on:
      - zookeeper

networks:
  clickhouse-network:
    name: clickhouse-network
    ipam:
      config:
        - subnet: 172.23.0.0/24&lt;/code&gt;&lt;/pre&gt;</description>
</item>

<item>
<title>GitLab Runner with Ansible &amp; Kerberos</title>
<guid isPermaLink="false">147</guid>
<link>https://blog.m9k.space/all/gitlab-runner-with-ansible-kerberos/</link>
<pubDate>Fri, 20 Oct 2023 10:08:08 +0000</pubDate>
<author>M</author>
<comments>https://blog.m9k.space/all/gitlab-runner-with-ansible-kerberos/</comments>
<description>
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;FROM alpine:3.16

RUN apk update &amp;amp;&amp;amp; \
apk add --no-cache git gitlab-runner ansible gawk krb5 dumb-init &amp;amp;&amp;amp; \
apk add --upgrade openssh-client-krb5 &amp;amp;&amp;amp; \
rm -rf /tmp/* &amp;amp;&amp;amp; \
rm -rf /var/cache/apk/*

RUN sed -i -e &amp;quot;s#\(^gitlab-runner:x\):[^:]\+:\(.*\)#\1:1010:\2#&amp;quot; /etc/group
RUN sed -i -e &amp;quot;s#\(^gitlab-runner:x\):[^:]\+:[^:]\+:\(.*\)#\1:1010:1010:\2#&amp;quot; /etc/passwd
RUN chown -R 1010:1010 /var/lib/gitlab-runner

COPY krb5.conf /etc/krb5.conf
COPY .gitconfig /var/lib/gitlab-runner/
COPY entrypoint /

STOPSIGNAL SIGQUIT
ENTRYPOINT [&amp;quot;/usr/bin/dumb-init&amp;quot;, &amp;quot;/entrypoint&amp;quot;]
CMD [&amp;quot;run&amp;quot;, &amp;quot;--user=gitlab-runner&amp;quot;, &amp;quot;--working-directory=/var/lib/gitlab-runner&amp;quot;]&lt;/code&gt;&lt;/pre&gt;</description>
</item>

<item>
<title>Dive</title>
<guid isPermaLink="false">124</guid>
<link>https://blog.m9k.space/all/dive/</link>
<pubDate>Mon, 30 Jan 2023 10:11:22 +0000</pubDate>
<author>M</author>
<comments>https://blog.m9k.space/all/dive/</comments>
<description>
&lt;p&gt;Наткнулся на толковую утилиту для просмотр файловой системы контейнера без запуска — и вложенных слоёв.&lt;br /&gt;
&lt;a href="https://github.com/wagoodman/dive"&gt;Ссылка на гитхаб&lt;/a&gt;&lt;/p&gt;
</description>
</item>

<item>
<title>Docker Proxy</title>
<guid isPermaLink="false">123</guid>
<link>https://blog.m9k.space/all/docker-proxy/</link>
<pubDate>Tue, 24 Jan 2023 07:26:41 +0000</pubDate>
<author>M</author>
<comments>https://blog.m9k.space/all/docker-proxy/</comments>
<description>
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;cd /etc/systemd/system/docker.service.d
touch http-proxy.conf&lt;/code&gt;&lt;/pre&gt;&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;[Service]
Environment=&amp;quot;HTTP_PROXY=http://proxy:3128&amp;quot;
Environment=&amp;quot;HTTPS_PROXY=http://proxy:3128&amp;quot;
Environment=&amp;quot;NO_PROXY=localhost,127.0.0.1,::1,proxy&amp;quot;&lt;/code&gt;&lt;/pre&gt;&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;systemctl daemon-reload
service docker restart
systemctl show --property=Environment docker&lt;/code&gt;&lt;/pre&gt;</description>
</item>

<item>
<title>Docker Service logs</title>
<guid isPermaLink="false">108</guid>
<link>https://blog.m9k.space/all/docker-service-logs/</link>
<pubDate>Thu, 24 Nov 2022 02:49:18 +0000</pubDate>
<author>M</author>
<comments>https://blog.m9k.space/all/docker-service-logs/</comments>
<description>
&lt;p&gt;Директории логов сервиса докер для разных ОС:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Ubuntu (old using upstart ) — /var/log/upstart/docker.log,&lt;/li&gt;
&lt;li&gt;Ubuntu (new using systemd ) — sudo journalctl -fu docker.service,&lt;/li&gt;
&lt;li&gt;Amazon Linux AMI — /var/log/docker,&lt;/li&gt;
&lt;li&gt;Boot2Docker — /var/log/docker.log,&lt;/li&gt;
&lt;li&gt;Debian GNU/Linux — /var/log/daemon.log,&lt;/li&gt;
&lt;li&gt;CentOS — cat /var/log/message | grep docker,&lt;/li&gt;
&lt;li&gt;CoreOS — journalctl -u docker.service,&lt;/li&gt;
&lt;li&gt;Fedora — journalctl -u docker.service,&lt;/li&gt;
&lt;li&gt;Red Hat Enterprise Linux Server — /var/log/messages | grep docker,&lt;/li&gt;
&lt;li&gt;OpenSuSE — journalctl -u docker.service,&lt;/li&gt;
&lt;li&gt;macOS — ~/Library/Containers/com.docker.docker/Data/log/vm/d‌​ocker.log,&lt;/li&gt;
&lt;li&gt;Windows — Get-EventLog -LogName Application -Source Docker -After (Get-Date).AddMinutes(-5) | Sort-Object Time.&lt;/li&gt;
&lt;/ul&gt;
</description>
</item>


</channel>
</rss>