# Образы Docker для Discourse не подписаны

**URL:** https://meta.discourse.org/t/discourse-docker-images-are-not-signed/137181
**Category:** Self-hosting
**Tags:** unsupported-install
**Created:** [27.Декабрь.2019 18:32:55 UTC](https://meta.discourse.org/t/discourse-docker-images-are-not-signed/137181 "2019-12-27T18:32:55Z")
**Posts on this page:** 18
**Page:** 1

<div class="post-metadata">

### Author: ![jenslauterbach](https://avatars.discourse-cdn.com/v4/letter/j/e9bcb4/32.png) [@jenslauterbach](https://meta.discourse.org/u/jenslauterbach)
#### Post date: [27.Декабрь.2019 18:32:55 UTC](https://meta.discourse.org/t/discourse-docker-images-are-not-signed/137181/1 "2019-12-27T18:32:55Z")

</div>

Здравствуйте,

В настоящее время я пытаюсь настроить Discourse на новом сервере. Я клонировал репозиторий `discourse_docker` и выполнил команду `./launcher rebuild app`. (Я пропустил этап начальной настройки, так как у меня уже были конфигурации с предыдущей установки).

Пересборка завершилась следующим выводом:

```plaintext
WARNING: We are about to start downloading the Discourse base image
This process may take anywhere between a few minutes to an hour, depending on your network speed

Please be patient

ERRO[0001] Metadata for targets expired
ERRO[0002] Metadata for targets expired
/usr/bin/docker: Error: remote repository docker.io/discourse/base out-of-date: targets expired at Mon Nov 18 12:52:09 -0500 2019.
See '/usr/bin/docker run --help'.
Your Docker installation is not working correctly

See: https://meta.discourse.org/t/docker-error-on-bootstrap/13657/18?u=sam

```

Чтобы найти корень проблемы, я проверил команду, которая выполняется, и запустил её в режиме отладки:

```plaintext
/usr/bin/docker --debug run -i --rm -a stdout -a stderr discourse/base:2.0.20191219-2109 echo working

```

См.: [discourse\_docker/launcher at 1b3dd3a41b544592be46b39db563bb757f88bbad · discourse/discourse\_docker · GitHub](https://github.com/discourse/discourse_docker/blob/1b3dd3a41b544592be46b39db563bb757f88bbad/launcher#L217)

> **Вывод команды:**
>
> ```plaintext
> DEBU[0000] reading certificate directory: /root/.docker/tls/notary.docker.io
> DEBU[0000] No yubikey found, using alternative key storage: no library found
> DEBU[0000] Making dir path: /root/.docker/trust/tuf/docker.io/discourse/base/changelist
> DEBU[0000] entered ValidateRoot with dns: docker.io/discourse/base
> DEBU[0000] found the following root keys: [5f5ba22b20768b8f2d49e9035400a1922ae761aa70b5bb0d930fe91dd06bd5d8]
> DEBU[0000] found 1 valid leaf certificates for docker.io/discourse/base: 5f5ba22b20768b8f2d49e9035400a1922ae761aa70b5bb0d930fe91dd06bd5d8
> DEBU[0000] found 1 leaf certs, of which 1 are valid leaf certs for docker.io/discourse/base
> DEBU[0000] checking root against trust_pinning config for docker.io/discourse/base
> DEBU[0000] checking trust-pinning for cert: 5f5ba22b20768b8f2d49e9035400a1922ae761aa70b5bb0d930fe91dd06bd5d8
> DEBU[0000] role has key IDs: 5f5ba22b20768b8f2d49e9035400a1922ae761aa70b5bb0d930fe91dd06bd5d8
> DEBU[0000] verifying signature for key ID: 5f5ba22b20768b8f2d49e9035400a1922ae761aa70b5bb0d930fe91dd06bd5d8
> DEBU[0000] root validation succeeded for docker.io/discourse/base
> DEBU[0000] entered ValidateRoot with dns: docker.io/discourse/base
> DEBU[0000] found the following root keys: [5f5ba22b20768b8f2d49e9035400a1922ae761aa70b5bb0d930fe91dd06bd5d8]
> DEBU[0000] found 1 valid leaf certificates for docker.io/discourse/base: 5f5ba22b20768b8f2d49e9035400a1922ae761aa70b5bb0d930fe91dd06bd5d8
> DEBU[0000] found 1 leaf certs, of which 1 are valid leaf certs for docker.io/discourse/base
> DEBU[0000] checking root against trust_pinning config for docker.io/discourse/base
> DEBU[0000] checking trust-pinning for cert: 5f5ba22b20768b8f2d49e9035400a1922ae761aa70b5bb0d930fe91dd06bd5d8
> DEBU[0000] role has key IDs: 5f5ba22b20768b8f2d49e9035400a1922ae761aa70b5bb0d930fe91dd06bd5d8
> DEBU[0000] verifying signature for key ID: 5f5ba22b20768b8f2d49e9035400a1922ae761aa70b5bb0d930fe91dd06bd5d8
> DEBU[0000] root validation succeeded for docker.io/discourse/base
> DEBU[0000] updating TUF client
> DEBU[0000] Loading timestamp...
> DEBU[0001] 200 when retrieving metadata for timestamp
> DEBU[0001] timestamp role has key IDs: db679e1f17a2a2bdd9952b6f37c9048635611f162bc6a0957ec30fbb1412d366
> DEBU[0001] verifying signature for key ID: db679e1f17a2a2bdd9952b6f37c9048635611f162bc6a0957ec30fbb1412d366
> DEBU[0001] timestamp role has key IDs: db679e1f17a2a2bdd9952b6f37c9048635611f162bc6a0957ec30fbb1412d366
> DEBU[0001] verifying signature for key ID: db679e1f17a2a2bdd9952b6f37c9048635611f162bc6a0957ec30fbb1412d366
> DEBU[0001] successfully verified downloaded timestamp
> DEBU[0001] Loading snapshot...
> DEBU[0001] snapshot role has key IDs: e88a99d5b23301178976a4a103df4716f7943301d9972db0541bfa17c94cb75b
> DEBU[0001] verifying signature for key ID: e88a99d5b23301178976a4a103df4716f7943301d9972db0541bfa17c94cb75b
> DEBU[0001] successfully verified cached snapshot
> DEBU[0001] Loading targets...
> DEBU[0001] no targets in cache, must download
> DEBU[0001] 200 when retrieving metadata for targets.09b50021560effa664eb8271cd16e2212ed55b7b63b2127cf9a0e69cfe2b47b7
> DEBU[0001] targets role has key IDs: c016860a9293a48bc98f27b9c36d81515f4bcc3dd2ec93bb2d6d8af8f37a39d2
> DEBU[0001] verifying signature for key ID: c016860a9293a48bc98f27b9c36d81515f4bcc3dd2ec93bb2d6d8af8f37a39d2
> ERRO[0001] Metadata for targets expired
> DEBU[0001] downloaded targets.09b50021560effa664eb8271cd16e2212ed55b7b63b2127cf9a0e69cfe2b47b7 is invalid: targets expired at Mon Nov 18 12:52:09 -0500 2019
> DEBU[0001] Client Update (Targets): targets expired at Mon Nov 18 12:52:09 -0500 2019
> DEBU[0001] Error occurred. Root will be downloaded and another update attempted
> DEBU[0001] Resetting the TUF builder...
> DEBU[0001] entered ValidateRoot with dns: docker.io/discourse/base
> DEBU[0001] found the following root keys: [5f5ba22b20768b8f2d49e9035400a1922ae761aa70b5bb0d930fe91dd06bd5d8]
> DEBU[0001] found 1 valid leaf certificates for docker.io/discourse/base: 5f5ba22b20768b8f2d49e9035400a1922ae761aa70b5bb0d930fe91dd06bd5d8
> DEBU[0001] found 1 leaf certs, of which 1 are valid leaf certs for docker.io/discourse/base
> DEBU[0001] found the following root keys: [5f5ba22b20768b8f2d49e9035400a1922ae761aa70b5bb0d930fe91dd06bd5d8]
> DEBU[0001] found 1 valid leaf certificates for docker.io/discourse/base: 5f5ba22b20768b8f2d49e9035400a1922ae761aa70b5bb0d930fe91dd06bd5d8
> DEBU[0001] found 1 valid root leaf certificates for docker.io/discourse/base: 5f5ba22b20768b8f2d49e9035400a1922ae761aa70b5bb0d930fe91dd06bd5d8
> DEBU[0001] role has key IDs: 5f5ba22b20768b8f2d49e9035400a1922ae761aa70b5bb0d930fe91dd06bd5d8
> DEBU[0001] verifying signature for key ID: 5f5ba22b20768b8f2d49e9035400a1922ae761aa70b5bb0d930fe91dd06bd5d8
> DEBU[0001] checking root against trust_pinning config for docker.io/discourse/base
> DEBU[0001] checking trust-pinning for cert: 5f5ba22b20768b8f2d49e9035400a1922ae761aa70b5bb0d930fe91dd06bd5d8
> DEBU[0001] role has key IDs: 5f5ba22b20768b8f2d49e9035400a1922ae761aa70b5bb0d930fe91dd06bd5d8
> DEBU[0001] verifying signature for key ID: 5f5ba22b20768b8f2d49e9035400a1922ae761aa70b5bb0d930fe91dd06bd5d8
> DEBU[0001] root validation succeeded for docker.io/discourse/base
> DEBU[0001] successfully verified cached root
> DEBU[0001] retrying TUF client update
> DEBU[0001] Loading timestamp...
> DEBU[0002] 200 when retrieving metadata for timestamp
> DEBU[0002] timestamp role has key IDs: db679e1f17a2a2bdd9952b6f37c9048635611f162bc6a0957ec30fbb1412d366
> DEBU[0002] verifying signature for key ID: db679e1f17a2a2bdd9952b6f37c9048635611f162bc6a0957ec30fbb1412d366
> DEBU[0002] successfully verified downloaded timestamp
> DEBU[0002] Loading snapshot...
> DEBU[0002] snapshot role has key IDs: e88a99d5b23301178976a4a103df4716f7943301d9972db0541bfa17c94cb75b
> DEBU[0002] verifying signature for key ID: e88a99d5b23301178976a4a103df4716f7943301d9972db0541bfa17c94cb75b
> DEBU[0002] successfully verified cached snapshot
> DEBU[0002] Loading targets...
> DEBU[0002] no targets in cache, must download
> DEBU[0002] 200 when retrieving metadata for targets.09b50021560effa664eb8271cd16e2212ed55b7b63b2127cf9a0e69cfe2b47b7
> DEBU[0002] targets role has key IDs: c016860a9293a48bc98f27b9c36d81515f4bcc3dd2ec93bb2d6d8af8f37a39d2
> DEBU[0002] verifying signature for key ID: c016860a9293a48bc98f27b9c36d81515f4bcc3dd2ec93bb2d6d8af8f37a39d2
> ERRO[0002] Metadata for targets expired
> DEBU[0002] downloaded targets.09b50021560effa664eb8271cd16e2212ed55b7b63b2127cf9a0e69cfe2b47b7 is invalid: targets expired at Mon Nov 18 12:52:09 -0500 2019
> DEBU[0002] Client Update (Targets): targets expired at Mon Nov 18 12:52:09 -0500 2019
> /usr/bin/docker: Error: remote repository docker.io/discourse/base out-of-date: targets expired at Mon Nov 18 12:52:09 -0500 2019.
> See '/usr/bin/docker run --help'.
> 
> ```

Я понятия не имею, почему это происходит. Я проверил историю git и откатился к ранее используемому базовому образу, чтобы проверить, поможет ли это. Результат был таким же.

См.: [Bump base image · discourse/discourse\_docker@1b3dd3a · GitHub](https://github.com/discourse/discourse_docker/commit/1b3dd3a41b544592be46b39db563bb757f88bbad#diff-f3e08b5119358a8f58f17a678759f60c)

Любая помощь будет приветствоваться 🙂

**Обновление #1**

Я создал пост на форуме Docker для обсуждения этой проблемы, как предложил @Falco.

> **[\[Issue\] Metadata for targets expired](https://forums.docker.com/t/issue-metadata-for-targets-expired/86410)**
>
> Hello, I have an issue pulling a certain image: $ docker pull discourse/base:2.0.20191219-2109 ERRO\[0001\] Metadata for targets expired ERRO\[0002\] Metadata for targets expired Error: remote repository docker.io/discourse/base out-of-date:...

---

<div class="post-metadata">

### Author: ![Falco](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/falco/32/179432_2.png) [@Falco](https://meta.discourse.org/u/Falco)
#### Post date: [27.Декабрь.2019 18:42:21 UTC](https://meta.discourse.org/t/discourse-docker-images-are-not-signed/137181/2 "2019-12-27T18:42:21Z")

</div>

Обновите Docker до последней версии, доступной для вашей операционной системы, и попробуйте снова.

---

<div class="post-metadata">

### Author: ![jenslauterbach](https://avatars.discourse-cdn.com/v4/letter/j/e9bcb4/32.png) [@jenslauterbach](https://meta.discourse.org/u/jenslauterbach)
#### Post date: [27.Декабрь.2019 18:46:44 UTC](https://meta.discourse.org/t/discourse-docker-images-are-not-signed/137181/3 "2019-12-27T18:46:44Z")

</div>

Спасибо за ваш ответ, @Falco.

Я использую последнюю версию Docker:

```plaintext
Docker version 19.03.5, build 633a0ea838

```

См.: [Docker Engine version 29 release notes | Docker Docs](https://docs.docker.com/engine/release-notes/)

Извините, что не упомянул об этом раньше 🙄

---

<div class="post-metadata">

### Author: ![Falco](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/falco/32/179432_2.png) [@Falco](https://meta.discourse.org/u/Falco)
#### Post date: [27.Декабрь.2019 18:51:42 UTC](https://meta.discourse.org/t/discourse-docker-images-are-not-signed/137181/4 "2019-12-27T18:51:42Z")

</div>

Значит, простая команда

```plaintext
docker pull discourse/base:2.0.20191219-2109

```

не выполняется?

---

<div class="post-metadata">

### Author: ![jenslauterbach](https://avatars.discourse-cdn.com/v4/letter/j/e9bcb4/32.png) [@jenslauterbach](https://meta.discourse.org/u/jenslauterbach)
#### Post date: [27.Декабрь.2019 18:52:55 UTC](https://meta.discourse.org/t/discourse-docker-images-are-not-signed/137181/5 "2019-12-27T18:52:55Z")

</div>

> [@Falco](#):
>
> docker pull discourse/base:2.0.20191219-2109

Да. Эта команда завершается ошибкой так же, как описано в моём первоначальном сообщении:

```plaintext
ERRO[0001] Metadata for targets expired
ERRO[0002] Metadata for targets expired
Error: remote repository docker.io/discourse/base out-of-date: targets expired at Mon Nov 18 12:52:09 -0500 2019

```

---

<div class="post-metadata">

### Author: ![Falco](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/falco/32/179432_2.png) [@Falco](https://meta.discourse.org/u/Falco)
#### Post date: [27.Декабрь.2019 18:56:58 UTC](https://meta.discourse.org/t/discourse-docker-images-are-not-signed/137181/6 "2019-12-27T18:56:58Z")

</div>

Это очень странно. Правильно ли настроены часы на вашем сервере? Не возникло ли у вас проблем с кэшированием, брандмауэром или чем-то подобным?

---

<div class="post-metadata">

### Author: ![jenslauterbach](https://avatars.discourse-cdn.com/v4/letter/j/e9bcb4/32.png) [@jenslauterbach](https://meta.discourse.org/u/jenslauterbach)
#### Post date: [27.Декабрь.2019 19:00:58 UTC](https://meta.discourse.org/t/discourse-docker-images-are-not-signed/137181/7 "2019-12-27T19:00:58Z")

</div>

@Falco Мои часы, кажется, синхронизированы:

```plaintext
$ timedatectl status

                      Local time: Пт 2019-12-27 19:57:48 CET
                  Universal time: Пт 2019-12-27 18:57:48 UTC
                        RTC time: Пт 2019-12-27 18:57:49
                       Time zone: Europe/Berlin (CET, +0100)
       System clock synchronized: yes
systemd-timesyncd.service active: yes
                 RTC in local TZ: no

```

Я использую Ubuntu 18.04 LTS.

---

<div class="post-metadata">

### Author: ![jenslauterbach](https://avatars.discourse-cdn.com/v4/letter/j/e9bcb4/32.png) [@jenslauterbach](https://meta.discourse.org/u/jenslauterbach)
#### Post date: [27.Декабрь.2019 19:03:02 UTC](https://meta.discourse.org/t/discourse-docker-images-are-not-signed/137181/8 "2019-12-27T19:03:02Z")

</div>

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

---

<div class="post-metadata">

### Author: ![Falco](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/falco/32/179432_2.png) [@Falco](https://meta.discourse.org/u/Falco)
#### Post date: [27.Декабрь.2019 19:05:38 UTC](https://meta.discourse.org/t/discourse-docker-images-are-not-signed/137181/9 "2019-12-27T19:05:38Z")

</div>

Что ж, я могу без проблем выполнить `docker pull discourse/base:2.0.20191219-2109` на разных операционных системах, в различных облачных провайдерах и на разных континентах. Поэтому я склонен думать, что проблема специфична для вашего локального компьютера или установки Docker.

Поскольку это сообщение исходит от службы `docker`, попробуйте обратиться за помощью на [https://forums.docker.com/](https://forums.docker.com/)

---

<div class="post-metadata">

### Author: ![jenslauterbach](https://avatars.discourse-cdn.com/v4/letter/j/e9bcb4/32.png) [@jenslauterbach](https://meta.discourse.org/u/jenslauterbach)
#### Post date: [27.Декабрь.2019 19:06:48 UTC](https://meta.discourse.org/t/discourse-docker-images-are-not-signed/137181/10 "2019-12-27T19:06:48Z")

</div>

Сделаю, @Falco. Спасибо за помощь до сих пор 🙂

---

<div class="post-metadata">

### Author: ![jenslauterbach](https://avatars.discourse-cdn.com/v4/letter/j/e9bcb4/32.png) [@jenslauterbach](https://meta.discourse.org/u/jenslauterbach)
#### Post date: [27.Декабрь.2019 22:06:42 UTC](https://meta.discourse.org/t/discourse-docker-images-are-not-signed/137181/11 "2019-12-27T22:06:42Z")

</div>

@Falco Я создал пост на форуме Docker и получил ответ.

Проблема связана с `DOCKER_CONTENT_TRUST=1`.

Чтобы воспроизвести эту проблему, выполните следующие команды:

```plaintext
$ export DOCKER_CONTENT_TRUST=1
$ docker pull discourse/base:2.0.20191219-2109

```

---

<div class="post-metadata">

### Author: ![Falco](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/falco/32/179432_2.png) [@Falco](https://meta.discourse.org/u/Falco)
#### Post date: [27.Декабрь.2019 22:08:36 UTC](https://meta.discourse.org/t/discourse-docker-images-are-not-signed/137181/12 "2019-12-27T22:08:36Z")

</div>

Понятно. Почему вы установили этот флаг на локальной машине? По умолчанию в Ubuntu он не включён.

---

<div class="post-metadata">

### Author: ![jenslauterbach](https://avatars.discourse-cdn.com/v4/letter/j/e9bcb4/32.png) [@jenslauterbach](https://meta.discourse.org/u/jenslauterbach)
#### Post date: [27.Декабрь.2019 22:09:46 UTC](https://meta.discourse.org/t/discourse-docker-images-are-not-signed/137181/13 "2019-12-27T22:09:46Z")

</div>

Я настраиваю сервер в интернете. Это не на моей локальной машине. Сервер должен быть «закалённым», и именно поэтому эта опция включена.

---

<div class="post-metadata">

### Author: ![Falco](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/falco/32/179432_2.png) [@Falco](https://meta.discourse.org/u/Falco)
#### Post date: [27.Декабрь.2019 22:15:54 UTC](https://meta.discourse.org/t/discourse-docker-images-are-not-signed/137181/14 "2019-12-27T22:15:54Z")

</div>

По умолчанию это также не включено в Ubuntu Server.

---

<div class="post-metadata">

### Author: ![jenslauterbach](https://avatars.discourse-cdn.com/v4/letter/j/e9bcb4/32.png) [@jenslauterbach](https://meta.discourse.org/u/jenslauterbach)
#### Post date: [27.Декабрь.2019 22:24:30 UTC](https://meta.discourse.org/t/discourse-docker-images-are-not-signed/137181/15 "2019-12-27T22:24:30Z")

</div>

Это верно, @Falco. Я включил это. Насколько я могу судить, образы Discourse либо не подписаны должным образом, либо не подписаны вообще (я сейчас это проверяю).

В любом случае, было бы желательно иметь подписанные образы/теги. Я могу предположить, что я не единственный, кто использует DCT.

Это часть инструментов аудита, таких как Docker Bench Security (см. ниже):

```plaintext
4.5 - Убедитесь, что доверие к содержимому для Docker включено

```

На данный момент я могу отключить это, но было бы здорово получить подписанный образ/тег и для образов Discourse 🙂

> **[GitHub - docker/docker-bench-security: The Docker Bench for Security is a script that...](https://github.com/docker/docker-bench-security)**
>
> The Docker Bench for Security is a script that checks for dozens of common best-practices around deploying Docker containers in production.

---

<div class="post-metadata">

### Author: ![jenslauterbach](https://avatars.discourse-cdn.com/v4/letter/j/e9bcb4/32.png) [@jenslauterbach](https://meta.discourse.org/u/jenslauterbach)
#### Post date: [27.Декабрь.2019 22:41:27 UTC](https://meta.discourse.org/t/discourse-docker-images-are-not-signed/137181/16 "2019-12-27T22:41:27Z")

</div>

Стоит ли создать запрос на добавление функции, чтобы закрыть этот вопрос?

---

<div class="post-metadata">

### Author: ![Stephen](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/stephen/32/95011_2.png) [@Stephen](https://meta.discourse.org/u/Stephen)
#### Post date: [28.Декабрь.2019 05:50:25 UTC](https://meta.discourse.org/t/discourse-docker-images-are-not-signed/137181/17 "2019-12-28T05:50:25Z")

</div>

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

---

<div class="post-metadata">

### Author: ![system](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/system/32/443519_2.png) [@system](https://meta.discourse.org/u/system)
#### Post date: [27.Январь.2020 05:50:45 UTC](https://meta.discourse.org/t/discourse-docker-images-are-not-signed/137181/18 "2020-01-27T05:50:45Z")

</div>

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.
