我正在使用https://github.com/puckel/docker-airflow镜像运行Airflow。我必须添加pip install docker
以使其支持DockerOperator。
一切似乎都很好,但我无法弄清楚如何从私有的Google Docker容器存储库中拉取映像。
我尝试在管理员部分添加连接,类型为Google Cloud Connection,并进行以下操作,运行docker operator。
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}} 错误 - 没有提供Docker注册表URL
我还尝试了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",
)
我得到了以下错误:
[2019-11-06 13:59:40,522] {{docker_operator.py:194}} INFO - 正在从镜像eu.gcr.io/project/image启动docker容器 [2019-11-06 13:59:40,524] {{taskinstance.py:1047}} ERROR - ('Connection aborted.', FileNotFoundError(2, '没有这个文件或目录'))
我也尝试仅使用dockercfg_path="config.json",但出现相同的错误。
我无法使用Bash Operator尝试进行docker登录,因为它无法识别docker命令...
我错过了什么?
第一行:docker: 命令未找到
t3 = BashOperator(
task_id='print_hello',
bash_command='docker login -u _json_key - p /usr/local/airflow/config.json eu.gcr.io'
)
gcloud auth configure-docker -q && docker pull $(IMAGE_NAME)
,这应该可以工作。 - redhatvickykubectl get deployment airflow-worker -o yaml --export > airflow-worker-config.yaml
kubectl apply -f airflow-worker-config.yaml
来源:https://groups.google.com/forum/?hl=zh-CN#!topic/cloud-composer-discuss/pSPKFS7AOj0