From fef7a45268940d4014e3ec98917ac1bfc3dd93e1 Mon Sep 17 00:00:00 2001 From: erjemin Date: Sat, 16 Nov 2024 21:44:02 +0300 Subject: [PATCH] =?UTF-8?q?=D0=A3=D1=81=D1=82=D0=B0=D0=BD=D0=BE=D0=B2?= =?UTF-8?q?=D0=BA=D0=B0=20GPG-=D0=BA=D0=BB=D1=8E=D1=87=D0=B0=20=D0=B4?= =?UTF-8?q?=D0=BB=D1=8F=20=D1=80=D0=B5=D0=BF=D0=BE=D0=B7=D0=B8=D1=82=D0=BE?= =?UTF-8?q?=D1=80=D0=B8=D0=B5=D0=B2=20Docker?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 1 + docker/docker-trusted-gpg.md | 74 ++++++++++++++++++++++++++++++++++++ 2 files changed, 75 insertions(+) create mode 100644 docker/docker-trusted-gpg.md diff --git a/README.md b/README.md index edbf1ba..b3dc897 100644 --- a/README.md +++ b/README.md @@ -2,6 +2,7 @@ ## Docker * [Расположение образов Docker](docker/docker-adjasting.md) +* [Установка GPG-ключа для репозиториев Docker](docker/docker-trusted-gpg.md) * [Контейнер MariaDB/MySQL](docker/docker-mariadb.md) * [Контейнер MySQL под Windows 10](docker/docker-mysql-in-windows10.md) * [Развертывание VPN-сервера на базе MS SSTP](docker/docker-sstp-vpn.md) diff --git a/docker/docker-trusted-gpg.md b/docker/docker-trusted-gpg.md new file mode 100644 index 0000000..6c9c9e8 --- /dev/null +++ b/docker/docker-trusted-gpg.md @@ -0,0 +1,74 @@ +# Установка GPG-ключа для репозиториев Docker + +Иногда, при установке Docker, возникает ошибка с ключом GPG. Например, при установке Docker на Ubuntu 20.04. Тогда +при обновлении списка пакета при обновлении командой `sudo apt-get update` выдается сообщение (или подобное): + +> W: https://mirrors.aliyun.com/docker-ce/linux/ubuntu/dists/jammy/InRelease: Key is stored in legacy trusted.gpg keyring (/etc/apt/trusted.gpg), see the DEPRECATION section in apt-key(8) for details. ?? + +Это связано с устаревшей практикой хранения ключей репозиториев в общем файле `/etc/apt/trusted.gpg`, а предупреждение +означает, что ключ GPG для репозитория Docker CE хранится в старом формате, который в будущем будет удален из +APT (Advanced Package Tool). Ранее APT использовал общий файл /etc/apt/trusted.gpg для хранения **всех** ключей +репозиториев. Это устарело из-за соображений безопасности. Новая практика заключается в том, чтобы хранить ключи +в отдельных файлах в директории `/etc/apt/trusted.gpg.d/`. + +## Как исправить + +Найдём ключ для репозитория: + +```shell +apt-key list +``` + +Ключ, связанный с репозиторием Docker может выглядеть, например, так (и радом будет предупреждение): +```text +Warning: apt-key is deprecated. Manage keyring files in trusted.gpg.d instead (see apt-key(8)). +/etc/apt/trusted.gpg +-------------------- +pub rsa4096 2017-02-22 [SCEA] + 9DC8 5822 9FC7 DD38 854A E2D8 8D81 803C 0EBF CD88 +uid [ unknown] Docker Release (CE deb) +sub rsa4096 2017-02-22 [S] +``` + +Удалим ключ из старой связки ключей (keyring): +```shell +sudo apt-key del 0EBFCD88 +``` + +На Orange Pi 5 Plus у меня не получилось установить GPG-ключ для Docker нормальным образом через команду (У вас, может, и получится): +```shell +sudo gpg --no-default-keyring --keyring /usr/share/keyrings/docker-archive-keyring.gpg --keyserver keyserver.ubuntu.com --recv-keys 7EA0A9C3F273FCD8 +``` + +И потому я пошел другим путем. Скачал ключ с сайта Docker и установил его вручную: +```shell +curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg +``` + +Проверим, что ключ сохранен: +```shell +ls -l /usr/share/keyrings/docker-archive-keyring.gpg +``` + +Исправим список репозиториев для Docker. Отроем на редактирование _docker.list_ командой: +```shell +sudo nano /etc/apt/sources.list.d/docker.list +``` + +У меня он выглядел так: +```text +deb [arch=arm64] https://mirrors.aliyun.com/docker-ce/linux/ubuntu jammy stable +``` + +Исправим его так, чтобы обращение в репозиторий было через GPG-ключ: +```text +# deb [arch=arm64] https://mirrors.aliyun.com/docker-ce/linux/ubuntu jammy stable +deb [arch=arm64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://mirrors.aliyun.com/docker-ce/linux/ubuntu jammy stable +``` + +Обновим список пакетов: +```shell +sudo apt-get update +``` + +Теперь при обновлении списка пакетов не будет предупреждения о старом ключе GPG! \ No newline at end of file