Docker Compose — Ошибка При Настройке Clairctl Для Сканирования Контейнера С Помощью Clair

  • Автор темы Novator
  • Обновлено
  • 22, Oct 2024
  • #1

Я пытаюсь настроить clairctl для сканирования образов наших приложений и поэтому хотел установить полный набор clairctl, clair Scanner и базы данных postgress. Я сделал следующие шаги:

  1. Приобретена виртуальная машина под управлением CentOS 7, 2 виртуальных ЦП и 8 ГБ ОЗУ.
  2. Установил docker-compose, как описано здесь: https:// www.linuxhelp.com/how-to-install-docker-compose-on-centos-7.
  3. Установил GO, как описано здесь: https:// linuxize.com/post/how-to-install-go-on-centos-7.
  4. Скачал и установил clairctl, перейдя на эту страницу: https:// github.com/jgsqware/clairctl. На этом этапе я столкнулся с некоторыми проблемами и попытался обойти их, как описано ниже.

i) Загрузите двоичную версию clairctl, запустив команду «curl -L https://». raw.githubusercontent.com/jgsqware/clairctl/master/install.sh | ш»

ii) Выполнили команду «git clone [email protected]:jgsqware/clairctl.git $GOPATH/src/github.com/jgsqware/clairctl», которая завершилась неудачей с сообщением об ошибке.

 
 
 
 
 [root@clair-server clairctl]# docker login -u username -p the-password
[root@clair-server clairctl]# docker-compose exec clairctl clairctl analyze my-org/my-container:186 --log-level debug
2018-09-19 13:49:10.858615 D | config: Using config file: /home/clairctl/clairctl.yml
2018-09-19 13:49:10.859175 D | dockerdist: Downloading manifest for my-org/my-container:186
2018-09-19 13:49:10.859395 D | dockerdist: Retrieving repository client
2018-09-19 13:49:11.240796 D | dockerdist: endpoint.TLSConfig.InsecureSkipVerify: true
client quit unexpectedly
2018-09-19 13:49:15.415043 C | cmd: retrieving manifest for "my-org/my-container:186": errors:
denied: requested access to the resource is denied
unauthorized: authentication required
[root@clair-server clairctl]#

[root@clair-server clairctl]#clairctl analyze my-org/my-container:186 --log-level debug
2018-09-19 09:51:33.513208 D | config: No config file used
2018-09-19 09:51:33.513675 D | dockerdist: Downloading manifest for my-org/my-container:186
2018-09-19 09:51:33.514031 D | dockerdist: Retrieving repository client
2018-09-19 09:51:37.131535 D | dockerdist: endpoint.TLSConfig.InsecureSkipVerify: true
2018-09-19 09:51:41.656177 D | dockerdist: manifest type: *schema2.DeserializedManifest
2018-09-19 09:51:41.656235 D | dockerdist: retrieved schema2 manifest, no verification
2018-09-19 09:51:41.656286 I | config: retrieving interface for local IP
2018-09-19 09:51:41.656301 D | config: no interface provided, looking for docker0
2018-09-19 09:51:41.656830 I | clair: Pushing Layer 1/7 [sha256:605ce]
2018-09-19 09:51:41.656982 D | clair: Saving sha256:605ce1bd3f3164f2949a30501cc596f52a72de05da1306ab360055f0d7130c32[https:// registry-1.docker.io/v2]
2018-09-19 09:51:41.657113 D | clair: auth.insecureSkipVerify: true
2018-09-19 09:51:41.657150 D | clair: request.URL.String(): https:// registry-1.docker.io/v2/my-org/my-container/blobs/sha256:605ce1bd3f3164f2949a30501cc596f52a72de05da1306ab360055f0d7130c32
2018-09-19 09:51:42.809395 I | clair: pull from clair is unauthorized
2018-09-19 09:51:43.941475 I | clair: adding layer 1/7 [sha256:605ce]: pushing layer to clair: Post http:// localhost:6060/v1/layers: dial tcp [::1]:6060: getsockopt: connection refused
client quit unexpectedly
2018-09-19 09:51:43.941545 C | cmd: pushing image "my-org/my-container:186": pushing layer to clair: Post http:// localhost:6060/v1/layers: dial tcp [::1]:6060: getsockopt: connection refused
[root@clair-server clairctl]#
 

Итак, чтобы обойти проблему, сделал следующее. Если это общая проблема, которая может затронуть многих, вы можете обновить README.md проекта, указав обходной путь, чтобы он помог другим пользователям clairctl.

[root@clair-server clairctl]# docker-compose exec clairctl clairctl health Clair: ✔ [root@clair-server clairctl]# clairctl health --log-level debug 2018-09-19 09:45:27.038127 D | config: No config file used 2018-09-19 09:45:27.038608 D | clair: requesting health on: http:// localhost:6061/health 2018-09-19 09:45:27.040779 E | clair: requesting Clair health: Get http:// localhost:6061/health: dial tcp [::1]:6061: getsockopt: connection refused Clair: ✘ [root@clair-server clairctl]#

iii) Затем выполнил команды, приведенные ниже:

cd $GOPATH/src/github.com/jgsqware/clairctl docker-compose up -d postgres

iv) Затем выполнил команду «docker-compose exec clairctl clairctl health», которая завершилась с ошибкой. Я погуглил эту ошибку, изучил файл docker-compose.yml. На основании этого я выполнил команду «docker-compose up -d clairctl», которая не упоминается. Это когда были скачаны и запущены образы для clair и clairctl. Затем я запустил команду «docker-compose exec clairctl clairctl health», которая прошла успешно. Возможно, вы захотите добавить в документацию недостающую команду: «docker-compose up -d postgres», чтобы она помогла другим пользователям clairctl.

  1. Текущая ситуация представлена ​​ниже. Есть ли способ работать второй команде (без docker-compose)? Не могли бы вы помочь мне здесь?
git clone git clone https:// github.com/jgsqware/clairctl.git export GOPATH=$PATH:~/go mkdir -p $GOPATH/src/github.com/jgsqware/clairctl mv clairctl $GOPATH/src/github.com/jgsqware/
  1. Я хочу просканировать контейнер нашего приложения, как и «вход в докер», а затем проанализировать, но столкнулся с проблемой, показанной ниже:
[root@clair-server ~]# git clone [email protected]:jgsqware/clairctl.git $GOPATH/src/github.com/jgsqware/clairctl Cloning into '/src/github.com/jgsqware/clairctl'... The authenticity of host 'github.com (192.30.253.113)' can't be established. RSA key fingerprint is SHA256:nThbg6kXUpJWGl7E1IGOCspRomTxdCARLviKw6E5SY8. RSA key fingerprint is MD5:16:27:ac:a5:76:28:2d:36:63:1b:56:4d:eb:df:a6:48. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added 'github.com,192.30.253.113' (RSA) to the list of known hosts. Permission denied (publickey). fatal: Could not read from remote repository. Please make sure you have the correct access rights and the repository exists. [root@clair-server ~]#

В конечном итоге я хочу использовать CLI для интеграции clairctl с Jenkins для реализации шлюза качества/безопасности. Есть ли способ продолжить сканирование (в идеале без docker-compose)? Не могли бы вы помочь мне здесь? Я пытался поискать в Google и прочитать темы о том, как преодолеть этот барьер, но не смог найти способ. Я думал опубликовать вопрос в clairctl/Lobby на Gitter, но решил, что не смогу выразиться подробно.

Любое руководство, помощь будут высоко оценены. Не могли бы вы мне помочь?

#контейнеры #docker-compose #security #clair

Novator


Рег
26 Nov, 2006

Тем
73

Постов
190

Баллов
565
  • 25, Oct 2024
  • #2

В конце концов я понял, что сервер Clair работает внутри контейнера и его сервисные порты — 6060 (API) и 6061 (Health) — доступны только внутри контекста контейнера. Я подтвердил это, выполнив следующие команды:

Команда для просмотра открытых портов внутри контейнера clair

 clairctl analyze <container-image-name> 

Команда для просмотра открытых портов внутри контейнера clairctl

clairctl health

Операция анализа clairctl не удалась внутри контейнера, поскольку контекст входа в докер был недоступен внутри. Я понял, что мне придется открыть порты 6060, 6061 изнутри сервера Clair вне контекста контейнера. Только тогда его можно будет увидеть с помощью двоичного файла clairctl, скопированного за пределы контейнера, где доступен контекст входа в докер. Я сделал следующие три изменения, благодаря которым смог успешно запустить команды clairctl.

  1. Скопировал файл https://github.com/jgsqware/clairctl/blob/master/clairctl.yml.default как clairctl.yml в каталог $HOME, откуда я выполнил вход в докер и запускал команды clairctl.
  2. Обновлено значение clair: image: quay.io/coreos/clair:v2.0.0 restart: unless-stopped ports: - "6060:6060" - "6061:6061" parameter in above file from clair к ports
  3. Добавлен uri: http://localhost clause in section for uri: http://clair в файл /root/go/src/github.com/jgsqware/clairctl/docker-compose.yml, как показано ниже.

    uri

Это открыло порты 6060, 6061 внутри контейнера clair для локального хоста, после чего команды типа docker-compose exec clairctl netstat -anp and docker-compose exec clair netstat -anp работал успешно.

 

ХОЗЯИН-777


Рег
27 Apr, 2006

Тем
81

Постов
197

Баллов
602
Похожие темы Дата
Похожие темы
Развертывание – Любые Инструменты, Доступные Для Планирования/Контрольного Списка Развертывания.
Сохранение Графиков Завершенных Модулей Kubernetes В Prometheus/Grafana
Развертывание. Как Обслуживать Restful Api?
Как В Tfs Проверить Базу Исходного Кода C# На Предмет Неправильного Использования Статических Переменных Или Методов В Многопоточном Коде Перед Сборкой
Как Установить Переменную Из Ini-Файла В Ansible?
Как Заставить Модуль Поиска Работать В Ansible?
Ansible — Существуют Ли Какие-Либо Передовые Методы И/Или Инструменты Для Мониторинга «Nohup»?
Веб-Сервисы Amazon — Динамическая Инвентаризация Ansible С Использованием Плагина Aws — Как Получить Внутренние Записи Dns Или Частный Ip-Адрес?
Веб-Сервисы Amazon. Можно Ли Смонтировать Корзину S3 Как Точку В Контейнере Докеров?
Веб-Службы Amazon. Может Ли Группа Автоматического Масштабирования Использовать Как Целевое Отслеживание, Так И Запланированные Политики?
Тем
403,760
Комментарии
400,028
Опыт
2,418,908

Интересно