Изображение док-станции "Поток воздуха" из частного хранилища контейнеров Google - PullRequest
2 голосов
/ 06 ноября 2019

Я использую образ https://github.com/puckel/docker-airflow для запуска Airflow. Мне пришлось добавить pip install docker, чтобы он поддерживал DockerOperator.

Все вроде бы нормально, но я не могу понять, как извлечь изображение из частного хранилища контейнеров Google Docker.

Я попытался добавить соединение в админ-секции типа подключения к облаку Google и запустить оператор Docker как.

    t2 = DockerOperator(
            task_id='docker_command',
            image='eu.gcr.io/project/image',
            api_version='2.3',
            auto_remove=True,
            command="/bin/sleep 30",
            docker_url="unix://var/run/docker.sock",
            network_mode="bridge",
            docker_conn_id="google_con"
    )

Но всегда получаю сообщение об ошибке ...

[2019-11-05 14: 12: 51,162] {{taskinstance.py:1047}} ОШИБКА - URL-адрес реестра Docker не предоставлен

Я также попробовал docker_conf_option

    t2 = DockerOperator(
            task_id='docker_command',
            image='eu.gcr.io/project/image',
            api_version='2.3',
            auto_remove=True,
            command="/bin/sleep 30",
            docker_url="unix://var/run/docker.sock",
            network_mode="bridge",
            dockercfg_path="/usr/local/airflow/config.json",

    )

Iполучить следующую ошибку:

[2019-11-06 13: 59: 40,522] {{docker_operator.py:194}} INFO - Запуск контейнера Docker из образа eu.gcr.io/project/image [2019-11-06 13: 59: 40,524] {{taskinstance.py:1047}} ОШИБКА - ('Соединение прервано.', FileNotFoundError (2, 'Нет такого файла или каталога'))

Я также попытался использовать только dockercfg_path = "config.json" и получил ту же ошибку.

Я не могу использовать Bash Operator, чтобы попробоватьвойти в Docker, поскольку он не распознает команду Docker ...

Что мне не хватает?

строка 1: docker: команда не найдена

t3 = BashOperator(
                task_id='print_hello',
                bash_command='docker login -u _json_key - p /usr/local/airflow/config.json eu.gcr.io'
        )

1 Ответ

0 голосов
/ 06 ноября 2019

Вам потребуется установить Cloud SDK на рабочую станцию, включающую инструмент командной строки gcloud.

После установки Cloud SDK и Docker версии 18.03 или новееСогласно документации, получаемой из реестра контейнеров, используйте команду:

docker pull [HOSTNAME]/[PROJECT-ID]/[IMAGE]:[TAG] 

или

docker pull [HOSTNAME]/[PROJECT-ID]/[IMAGE]@[IMAGE_DIGEST]

, где:

  • [HOSTNAME] указан в спискеРасположение в консоли. Это один из четырех вариантов: gcr.io, us.gcr.io, eu.gcr.io или asia.gcr.io.
  • [PROJECT-ID] - это идентификатор проекта консоли облачной платформы Google.
  • [ИЗОБРАЖЕНИЕ] - это имя изображения в Реестре контейнеров.
  • [TAG] - это тег, примененный к изображению. В реестре теги являются уникальными для изображения.
  • [IMAGE_DIGEST] - это хэш-значение sha256 содержимого изображения. В консоли щелкните конкретное изображение, чтобы увидеть его метаданные. Дайджест указан как Дайджест изображения.

Чтобы получить команду извлечения для определенного изображения:

  1. Нажмите на имя изображения, чтобы перейти к конкретному реестру. .
  2. В реестре установите флажок рядом с версией образа, который вы хотите получить.
  3. Нажмите SHOW PULL COMMAND в верхней части страницы.
  4. Скопируйте команду pull, которая идентифицирует изображение, используя тег или дайджест

* Также убедитесь, что у вас есть права на выдвижение и извлечение из реестра.

** Настроил Docker для использования gcloud в качестве помощника по учетным данным или использует другой метод аутентификации . Чтобы использовать gcloud в качестве помощника по учетным данным, выполните команду:

gcloud auth configure-docker
...