{
    "version": "https:\/\/jsonfeed.org\/version\/1",
    "title": "M9K blog: заметки с тегом docker",
    "_rss_description": "Заметки обо всём: devops, lifestyle, культура.",
    "_rss_language": "ru",
    "_itunes_email": "",
    "_itunes_categories_xml": "",
    "_itunes_image": "",
    "_itunes_explicit": "",
    "home_page_url": "https:\/\/blog.m9k.space\/tags\/docker\/",
    "feed_url": "https:\/\/blog.m9k.space\/tags\/docker\/json\/",
    "icon": "https:\/\/blog.m9k.space\/user\/userpic@2x.jpg?1769095194",
    "author": {
        "name": "M",
        "url": "https:\/\/blog.m9k.space\/",
        "avatar": "https:\/\/blog.m9k.space\/user\/userpic@2x.jpg?1769095194"
    },
    "items": [
        {
            "id": "201",
            "url": "https:\/\/blog.m9k.space\/all\/skreschivaem-uzha-i-ezha\/",
            "title": "CouchDB, Debian, AstraLinux, Docker и все-все-все",
            "content_html": "<p>Возникла необходимость запустить Couchdb в контейнере, где базовая ось (и базовые же пакеты) должны быть очень-очень свежими, в противной случай контейнер не проходит встроенную проверку на безопасность.<br \/>\nСтандартный официальный образ собран на базе Debian 12.<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">FROM debian:bookworm-slim<\/code><\/pre><p>Простая замена базового образа на<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">FROM debian:trixie-slim<\/code><\/pre><p>приводит к тому, что контейнер не собирается по зависимостям.<br \/>\nСмотрим официальную репу в части зависимостей и видим прекрасное — libmozjs-78-0 (>= 78.15.0). Пробуем ставить свежую версию, которая есть в репах — не помогает, пакет couchdb принципиально требует libmozjs-78-0.<\/p>\n<p>Ок, скрещиваем ежа и ужа.<\/p>\n<p>У debian есть механизм apt-pinning. Это механизм, позволяющий задать приоритеты для версий пакетов из разных источников (репозиториев, release-веток, PPA), чтобы фиксировать версию, запрещать обновление или предпочитать конкретный источник.<\/p>\n<p>Коротко приоритеты делятся на:<\/p>\n<ul>\n<li>< 0 — никогда не устанавливать.<\/li>\n<li>1..99 — ставить только при явном указании версии.<\/li>\n<li>100 — приоритет уже установленной версии.<\/li>\n<li>500 — дефолт для неприоритетных источников.<\/li>\n<li>990 — приоритет для целевого релиза (-t), либо если явно указан release.<\/li>\n<li>>1000 — разрешает понижение версии (downgrade) к закреплённой.<\/li>\n<\/ul>\n<p>Добавляет в наш Dockerfile:<\/p>\n<pre class=\"e2-text-code\"><code class=\"\">RUN echo &quot;deb http:\/\/deb.debian.org\/debian bookworm main&quot; &gt; \/etc\/apt\/sources.list.d\/bookworm.list &amp;&amp; \\\r\n    echo &quot;Package: *\\nPin: release n=bookworm\\nPin-Priority: 500&quot; &gt; \/etc\/apt\/preferences.d\/bookworm &amp;&amp; \\\r\n    echo &quot;Package: *\\nPin: release n=trixie\\nPin-Priority: 600&quot; &gt; \/etc\/apt\/preferences.d\/trixie &amp;&amp; \\\r\n    echo &quot;deb [signed-by=\/usr\/share\/keyrings\/couchdb-archive-keyring.gpg] https:\/\/apache.jfrog.io\/artifactory\/couchdb-deb\/ bookworm main&quot; \\\r\n            &gt; \/etc\/apt\/sources.list.d\/couchdb.list &amp;&amp; \\\r\n    apt-get update<\/code><\/pre><p>Основная часть пакетов ставится из свежей репы, часть, которых в ней нет — из старых.<\/p>\n",
            "date_published": "2025-08-14T10:40:09+00:00",
            "date_modified": "2025-08-14T10:40:08+00:00",
            "_date_published_rfc2822": "Thu, 14 Aug 2025 10:40:09 +0000",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "201",
            "_e2_data": {
                "is_favourite": false,
                "links_required": [
                    "system\/library\/highlight\/highlight.js",
                    "system\/library\/highlight\/highlight.css"
                ],
                "og_images": []
            }
        },
        {
            "id": "197",
            "url": "https:\/\/blog.m9k.space\/all\/multistage-docker-kak-peresobirat-bez-kesha-ne-ves-dockefile\/",
            "title": "Multistage Docker — как пересобирать без кэша не весь Dockefile",
            "content_html": "<p>Возникла необходимость пересобрать отдельный stage-контейнер из Dockerfile. Первый собранный контейнер — это контейнер сборки OpenSSL, который выполняется очень, очень долго. Для того, чтоб сэкономить время, во вторую часть добавляем:<\/p>\n<pre class=\"e2-text-code\"><code class=\"\"># Stage 1: OpenSSL-сборка (пусть останется закешированной)\r\nFROM debian:bookworm AS openssl-build\r\n# ... \r\n# Stage 2: основная\r\nFROM debian:bookworm-slim\r\n# Аргумент, чтобы инвалидировать кэш\r\nARG CACHE_BREAKER=default\r\n# Используем его в ENV, чтобы Docker счёл слой новым\r\nENV CACHE_BREAKER=${CACHE_BREAKER}<\/code><\/pre>",
            "date_published": "2025-08-05T08:47:54+00:00",
            "date_modified": "2025-08-05T08:47:44+00:00",
            "_date_published_rfc2822": "Tue, 05 Aug 2025 08:47:54 +0000",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "197",
            "_e2_data": {
                "is_favourite": false,
                "links_required": [
                    "system\/library\/highlight\/highlight.js",
                    "system\/library\/highlight\/highlight.css"
                ],
                "og_images": []
            }
        },
        {
            "id": "150",
            "url": "https:\/\/blog.m9k.space\/all\/old-apache-kafka-zookeeper-clickhouse-in-docker\/",
            "title": "Old Apache Kafka + ZooKeeper + Clickhouse in Docker",
            "content_html": "<p><i>docker-compose.yml<\/i><\/p>\n<pre class=\"e2-text-code\"><code class=\"\">version: '3.5'\r\nservices:\r\n  kafka:\r\n    image: bitnami\/kafka:2.6.0\r\n    ports:\r\n      - &quot;9092:9092&quot;\r\n    environment:\r\n      - KAFKA_BROKER_ID=1\r\n      - KAFKA_LISTENERS=PLAINTEXT:\/\/:9092\r\n      - KAFKA_ADVERTISED_LISTENERS=PLAINTEXT:\/\/172.23.0.13:9092\r\n      - KAFKA_ZOOKEEPER_CONNECT=zookeeper:2181\r\n      - ALLOW_PLAINTEXT_LISTENER=yes\r\n    depends_on:\r\n      - zookeeper\r\n    networks:\r\n      clickhouse-network:\r\n        ipv4_address: 172.23.0.13\r\n  zookeeper:\r\n    image: zookeeper:3.5.8\r\n    container_name: zookeeper\r\n    hostname: zookeeper\r\n    ports:\r\n      - &quot;2181:2181&quot;\r\n    environment:\r\n      - ALLOW_ANONYMOUS_LOGIN=yes\r\n    networks:\r\n      clickhouse-network:\r\n        ipv4_address: 172.23.0.10\r\n  clickhouse01:\r\n    image: yandex\/clickhouse-server:20.8.12.2\r\n    container_name: clickhouse01\r\n    hostname: clickhouse01\r\n    networks:\r\n      clickhouse-network:\r\n        ipv4_address: 172.23.0.11\r\n    ports:\r\n      - &quot;127.0.0.1:8123:8123&quot;\r\n      - &quot;127.0.0.1:9000:9000&quot;\r\n    volumes:\r\n      - ${PWD}\/clickhouse01:\/etc\/clickhouse-server\r\n      - \/mnt\/volume\/clickhouse01\/data:\/var\/lib\/clickhouse\/\r\n      - \/mnt\/volume\/clickhouse01\/logs:\/var\/log\/clickhouse-server\/\r\n    depends_on:\r\n      - zookeeper\r\n  clickhouse02:\r\n    image: yandex\/clickhouse-server:20.8.12.2\r\n    container_name: clickhouse02\r\n    hostname: clickhouse02\r\n    networks:\r\n      clickhouse-network:\r\n        ipv4_address: 172.23.0.12\r\n    volumes:\r\n      - ${PWD}\/clickhouse02:\/etc\/clickhouse-server\r\n      - \/mnt\/volume\/clickhouse02\/data:\/var\/lib\/clickhouse\/\r\n      - \/mnt\/volume\/clickhouse02\/logs:\/var\/log\/clickhouse-server\/\r\n    depends_on:\r\n      - zookeeper\r\n\r\nnetworks:\r\n  clickhouse-network:\r\n    name: clickhouse-network\r\n    ipam:\r\n      config:\r\n        - subnet: 172.23.0.0\/24<\/code><\/pre>",
            "date_published": "2023-11-02T07:52:07+00:00",
            "date_modified": "2023-12-12T04:55:10+00:00",
            "_date_published_rfc2822": "Thu, 02 Nov 2023 07:52:07 +0000",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "150",
            "_e2_data": {
                "is_favourite": false,
                "links_required": [
                    "system\/library\/highlight\/highlight.js",
                    "system\/library\/highlight\/highlight.css"
                ],
                "og_images": []
            }
        },
        {
            "id": "147",
            "url": "https:\/\/blog.m9k.space\/all\/gitlab-runner-with-ansible-kerberos\/",
            "title": "GitLab Runner with Ansible & Kerberos",
            "content_html": "<pre class=\"e2-text-code\"><code class=\"\">FROM alpine:3.16\r\n\r\nRUN apk update &amp;&amp; \\\r\napk add --no-cache git gitlab-runner ansible gawk krb5 dumb-init &amp;&amp; \\\r\napk add --upgrade openssh-client-krb5 &amp;&amp; \\\r\nrm -rf \/tmp\/* &amp;&amp; \\\r\nrm -rf \/var\/cache\/apk\/*\r\n\r\nRUN sed -i -e &quot;s#\\(^gitlab-runner:x\\):[^:]\\+:\\(.*\\)#\\1:1010:\\2#&quot; \/etc\/group\r\nRUN sed -i -e &quot;s#\\(^gitlab-runner:x\\):[^:]\\+:[^:]\\+:\\(.*\\)#\\1:1010:1010:\\2#&quot; \/etc\/passwd\r\nRUN chown -R 1010:1010 \/var\/lib\/gitlab-runner\r\n\r\nCOPY krb5.conf \/etc\/krb5.conf\r\nCOPY .gitconfig \/var\/lib\/gitlab-runner\/\r\nCOPY entrypoint \/\r\n\r\nSTOPSIGNAL SIGQUIT\r\nENTRYPOINT [&quot;\/usr\/bin\/dumb-init&quot;, &quot;\/entrypoint&quot;]\r\nCMD [&quot;run&quot;, &quot;--user=gitlab-runner&quot;, &quot;--working-directory=\/var\/lib\/gitlab-runner&quot;]<\/code><\/pre>",
            "date_published": "2023-10-20T10:08:08+00:00",
            "date_modified": "2023-10-20T10:07:57+00:00",
            "_date_published_rfc2822": "Fri, 20 Oct 2023 10:08:08 +0000",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "147",
            "_e2_data": {
                "is_favourite": false,
                "links_required": [
                    "system\/library\/highlight\/highlight.js",
                    "system\/library\/highlight\/highlight.css"
                ],
                "og_images": []
            }
        },
        {
            "id": "124",
            "url": "https:\/\/blog.m9k.space\/all\/dive\/",
            "title": "Dive",
            "content_html": "<p>Наткнулся на толковую утилиту для просмотр файловой системы контейнера без запуска — и вложенных слоёв.<br \/>\n<a href=\"https:\/\/github.com\/wagoodman\/dive\">Ссылка на гитхаб<\/a><\/p>\n",
            "date_published": "2023-01-30T10:11:22+00:00",
            "date_modified": "2023-01-30T10:11:20+00:00",
            "_date_published_rfc2822": "Mon, 30 Jan 2023 10:11:22 +0000",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "124",
            "_e2_data": {
                "is_favourite": false,
                "links_required": [],
                "og_images": []
            }
        },
        {
            "id": "123",
            "url": "https:\/\/blog.m9k.space\/all\/docker-proxy\/",
            "title": "Docker Proxy",
            "content_html": "<pre class=\"e2-text-code\"><code class=\"\">cd \/etc\/systemd\/system\/docker.service.d\r\ntouch http-proxy.conf<\/code><\/pre><pre class=\"e2-text-code\"><code class=\"\">[Service]\r\nEnvironment=&quot;HTTP_PROXY=http:\/\/proxy:3128&quot;\r\nEnvironment=&quot;HTTPS_PROXY=http:\/\/proxy:3128&quot;\r\nEnvironment=&quot;NO_PROXY=localhost,127.0.0.1,::1,proxy&quot;<\/code><\/pre><pre class=\"e2-text-code\"><code class=\"\">systemctl daemon-reload\r\nservice docker restart\r\nsystemctl show --property=Environment docker<\/code><\/pre>",
            "date_published": "2023-01-24T07:26:41+00:00",
            "date_modified": "2023-01-30T10:11:38+00:00",
            "_date_published_rfc2822": "Tue, 24 Jan 2023 07:26:41 +0000",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "123",
            "_e2_data": {
                "is_favourite": false,
                "links_required": [
                    "system\/library\/highlight\/highlight.js",
                    "system\/library\/highlight\/highlight.css"
                ],
                "og_images": []
            }
        },
        {
            "id": "108",
            "url": "https:\/\/blog.m9k.space\/all\/docker-service-logs\/",
            "title": "Docker Service logs",
            "content_html": "<p>Директории логов сервиса докер для разных ОС:<\/p>\n<ul>\n<li>Ubuntu (old using upstart ) — \/var\/log\/upstart\/docker.log,<\/li>\n<li>Ubuntu (new using systemd ) — sudo journalctl -fu docker.service,<\/li>\n<li>Amazon Linux AMI — \/var\/log\/docker,<\/li>\n<li>Boot2Docker — \/var\/log\/docker.log,<\/li>\n<li>Debian GNU\/Linux — \/var\/log\/daemon.log,<\/li>\n<li>CentOS — cat \/var\/log\/message | grep docker,<\/li>\n<li>CoreOS — journalctl -u docker.service,<\/li>\n<li>Fedora — journalctl -u docker.service,<\/li>\n<li>Red Hat Enterprise Linux Server — \/var\/log\/messages | grep docker,<\/li>\n<li>OpenSuSE — journalctl -u docker.service,<\/li>\n<li>macOS — ~\/Library\/Containers\/com.docker.docker\/Data\/log\/vm\/d‌​ocker.log,<\/li>\n<li>Windows — Get-EventLog -LogName Application -Source Docker -After (Get-Date).AddMinutes(-5) | Sort-Object Time.<\/li>\n<\/ul>\n",
            "date_published": "2022-11-24T02:49:18+00:00",
            "date_modified": "2022-11-24T02:49:01+00:00",
            "_date_published_rfc2822": "Thu, 24 Nov 2022 02:49:18 +0000",
            "_rss_guid_is_permalink": "false",
            "_rss_guid": "108",
            "_e2_data": {
                "is_favourite": false,
                "links_required": [],
                "og_images": []
            }
        }
    ],
    "_e2_version": 3877,
    "_e2_ua_string": "E2 (v3877; Aegea)"
}