doc_memo/docker/docker-trusted-gpg.md

79 lines
4.4 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Установка 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) <docker@docker.com>
sub rsa4096 2017-02-22 [S]
```
Удалим ключ из старой связки ключей (keyring):
```shell
sudo apt-key del 0EBFCD88
```
На всякий случай, проверим, что установлены покеты для работы с HTTPS, curl для загрузки ключей по интернет,
ca-certificates для проверки сертификатов и gpg для работы с ключами. Просто установим их (если они не установлены,
то ничего не произойдет):
```shell
sudo apt-get install -y apt-transport-https ca-certificates curl gpg
```
На 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
```
У меня рабочий вариант на Orange Pi 5 (с процессором ARM64) он выглядел так:
```text
deb [arch=arm64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://mirrors.aliyun.com/docker-ce/linux/ubuntu jammy stable
```
А на стареньком Raspberry Pi 3 (с процессором 32-битным ARMv7) он выглядел так:
```text
deb [arch=armhf signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu focal stable
```
Обновим список пакетов:
```shell
sudo apt-get update
```
Теперь при обновлении списка пакетов не будет предупреждения о старом ключе GPG!