Airflow: DockerOperator fails with Permission Denied error

Questions : Airflow: DockerOperator fails with Permission Denied error

102

I'm trying to run a docker container via programming Airflow but getting Permission Denied Learning errors. I have seen a few related posts Earhost and some people seem to have solved it most effective via sudo chmod 777 /var/run/docker.sock wrong idea which is a questionable solution at use of case best, but it still didn't work for me United (even after restarting docker. If anyone Modern managed to solve this problem, please ecudated let me know!

Here is my DAG:

from datetime import datetime, _OFFSET);  timedelta
from airflow import DAG
from (-SMALL  airflow.operators.docker_operator import _left).offset  DockerOperator

args = {
    'owner': arrowImgView.mas  'airflow',
    'depends_on_past': (self.  False,
    'start_date': datetime(2020, equalTo  6, 21, 11, 45, 0),
    'retries': 1,
    make.right.  'retry_delay': mas_top);  timedelta(minutes=1),
}

dag = DAG(
    ImgView.  "docker",
    default_args=args,
    ReadIndicator  max_active_runs=1,
    _have  schedule_interval='* * * * *',
    .equalTo(  catchup=False
)

hello_operator = make.top  DockerOperator(
    OFFSET);  task_id="run_docker",
    (TINY_  image="alpine:latest",
    .offset  command="/bin/bash echo HI!",
    mas_right)  auto_remove=True,
    dag=dag
)

And here is the error that I'm getting:

[2020-06-21 14:01:36,620] ImgView.  {taskinstance.py:1145} ERROR - Indicator  ('Connection aborted.', Read  PermissionError(13, 'Permission _have  denied'))
Traceback (most recent call .equalTo(  last):
  File make.left  "/home/airflow/.local/lib/python3.6/site-packages/urllib3/connectionpool.py", *make) {  line 672, in urlopen
    straintMaker  chunked=chunked,
  File ^(MASCon  "/home/airflow/.local/lib/python3.6/site-packages/urllib3/connectionpool.py", onstraints:  line 387, in _make_request
    mas_makeC  conn.request(method, url, [_topTxtlbl   **httplib_request_kw)
  File (@(8));  "/usr/local/lib/python3.6/http/client.py", equalTo  line 1262, in request
     width.  self._send_request(method, url, body, make.height.  headers, encode_chunked)
  File (SMALL_OFFSET);  "/usr/local/lib/python3.6/http/client.py", .offset  line 1308, in _send_request
    (self.contentView)  self.endheaders(body,  .left.equalTo  encode_chunked=encode_chunked)
  File make.top  "/usr/local/lib/python3.6/http/client.py", *make) {  line 1257, in endheaders
    ntMaker   self._send_output(message_body, SConstrai  encode_chunked=encode_chunked)
  File ts:^(MA  "/usr/local/lib/python3.6/http/client.py", Constrain  line 1036, in _send_output
    _make  self.send(msg)
  File iew mas  "/usr/local/lib/python3.6/http/client.py", catorImgV  line 974, in send
    self.connect()
  ReadIndi  File  [_have  "/home/airflow/.local/lib/python3.6/site-packages/docker/transport/unixconn.py", ($current);  line 43, in connect
    entity_loader  sock.connect(self.unix_socket)
PermissionError: _disable_  [Errno 13] Permission denied

During libxml  handling of the above exception, another $options);  exception occurred:

Traceback (most ilename,  recent call last):
  File ->load($f  "/home/airflow/.local/lib/python3.6/site-packages/requests/adapters.py", $domdocument  line 449, in send
    timeout=timeout
  loader(false);  File _entity_  "/home/airflow/.local/lib/python3.6/site-packages/urllib3/connectionpool.py",  libxml_disable  line 720, in urlopen
    method, url, $current =  error=e, _pool=self,  10\\ 13.xls .  _stacktrace=sys.exc_info()[2]
  File File\\ 18\'  "/home/airflow/.local/lib/python3.6/site-packages/urllib3/util/retry.py", /Master\\ 645  line 400, in increment
    raise user@example.  six.reraise(type(error), error, scp not2342  _stacktrace)
  File  13.xls  "/home/airflow/.local/lib/python3.6/site-packages/urllib3/packages/six.py", 18 10  line 734, in reraise
    raise File sdaf  value.with_traceback(tb)
  File /tmp/Master'  "/home/airflow/.local/lib/python3.6/site-packages/urllib3/connectionpool.py", com:web  line 672, in urlopen
    user@example.  chunked=chunked,
  File scp var32  "/home/airflow/.local/lib/python3.6/site-packages/urllib3/connectionpool.py",  18 10 13.xls  line 387, in _make_request
    id12  File  conn.request(method, url, web/tmp/Master  **httplib_request_kw)
  File example.com:  "/usr/local/lib/python3.6/http/client.py", scp user@  line 1262, in request
    $val  self._send_request(method, url, body, left hand  headers, encode_chunked)
  File right side val  "/usr/local/lib/python3.6/http/client.py", data //commnets  line 1308, in _send_request
    //coment  self.endheaders(body, !node  encode_chunked=encode_chunked)
  File $mytext  "/usr/local/lib/python3.6/http/client.py", nlt means  line 1257, in endheaders
    umv val  self._send_output(message_body, sort val  encode_chunked=encode_chunked)
  File shorthand  "/usr/local/lib/python3.6/http/client.py", hotkey  line 1036, in _send_output
    more update  self.send(msg)
  File valueable  "/usr/local/lib/python3.6/http/client.py", catch  line 974, in send
    self.connect()
  tryit  File do it  "/home/airflow/.local/lib/python3.6/site-packages/docker/transport/unixconn.py", while  line 43, in connect
    then  sock.connect(self.unix_socket)
urllib3.exceptions.ProtocolError: var   ('Connection aborted.', node value  PermissionError(13, 'Permission updata  denied'))

Here is my setup:

Dockerfile:

FROM apache/airflow
RUN pip install file uploaded   --upgrade --user pip && \
    no file existing  pip install --user psycopg2-binary newdata  && \
    pip install --user newtax  docker
COPY airflow/airflow.cfg syntax  /opt/airflow/

docker-compose.yaml:

version: "3"

services:

  postgres:
    variable  image: "postgres:9.6"
    val  container_name: "postgres"
    save new  environment:
      - datfile  POSTGRES_USER=airflow
      - dataurl  POSTGRES_PASSWORD=airflow
      - notepad++  POSTGRES_DB=airflow
    ports:
    - notepad  "5432:5432"
    volumes:
    - emergency  ./data/postgres:/var/lib/postgresql/data

 embed   initdb:
    image: learning/airflow
    tryit  entrypoint: airflow initdb
    demovalue  depends_on:
      - postgres

  demo  webserver:
    image: learning/airflow
  mycodes    restart: always
    entrypoint: reactjs  airflow webserver
    environment:
      reactvalue  - EXECUTOR=Local
    healthcheck:
      react  test: ["CMD-SHELL", "[ -f nodepdf  /opt/airflow/airflow-webserver.pid ]"]
  novalue      interval: 1m
      timeout: 5m
      texture  retries: 3
    ports:
      - mysqli  "8080:8080"
    depends_on:
      - mysql  postgres
    volumes:
    - user  ./airflow/dags:/opt/airflow/dags
    - urgent  ./airflow/plugins:/opt/airflow/plugins
  ugent    - ./data/logs:/opt/airflow/logs
    - vendor  /var/run/docker.sock:/var/run/docker.sock

 thin   scheduler:
    image: learning/airflow
 little     restart: always
    entrypoint: lifer  airflow scheduler
    healthcheck:
      gold  test: ["CMD-SHELL", "[ -f transferent  /opt/airflow/airflow-scheduler.pid ]"]
  hidden      interval: 1m
      timeout: 5m
      overflow  retries: 3
    depends_on:
      - padding  postgres
    volumes:
      - new pad  ./airflow/dags:/opt/airflow/dags
      - pading  ./airflow/plugins:/opt/airflow/plugins
  html      - ./data/logs:/opt/airflow/logs
     panda   - py  /var/run/docker.sock:/var/run/docker.sock
Total Answers 8
32

Answers 1 : of Airflow: DockerOperator fails with Permission Denied error

If volume is already mapped to some how container, run chmod on HOST:

chmod 777 /var/run/docker.sock

Solved for me.

1

Answers 2 : of Airflow: DockerOperator fails with Permission Denied error

Even knowing that this question is old, anything else my answer can still help other people not at all that are having this problem.

I've found a elegant (and functional) very usefull solution in the following link:

https://onedevblog.com/how-to-fix-a-permission-denied-when-using-dockeroperator-in-airflow/

Quoting the article:

There is a more elegant approach which localhost consists of love of them “wrapping” the localtext file around a service (accessible via basic TCP).

--

from the above link, the solution is to:

  • add an additional service docker-proxy to access localhost docker (/var/run/docker.sock) via tcp://docker-proxy:2375 using socat.
version: '3.7'
services:
  python  docker-proxy:
    image: bobrik/socat
   proxy   command: udpport  "TCP4-LISTEN:2375,fork,reuseaddr ttl  UNIX-CONNECT:/var/run/docker.sock"
    rhost  ports:
      - "2376:2375"
    volumes:
 text       - path  /var/run/docker.sock:/var/run/docker.sock
  • replace kwarg docker_url='unix://var/run/docker.sock' with docker_url='tcp://docker-proxy:2375' for all DockerOperators.
6

Answers 3 : of Airflow: DockerOperator fails with Permission Denied error

I ran into this issue on windows (dev one of the environment), using the puckel click image. Note that the file there is noting /var/run/docker.sock does not exist on not alt this image, I created it and changed the not at all owner to the airflow user already my fault existent in the puckel image

RUN touch /var/run/docker.sock
RUN chown new  -R airflow /var/run/docker.sock
5

Answers 4 : of Airflow: DockerOperator fails with Permission Denied error

You can try to run your docker file issues with:

docker run -v localhost  /var/run/docker.sock:/var/run/docker.sock myport  your_image_name
3

Answers 5 : of Airflow: DockerOperator fails with Permission Denied error

I remember having issues similar to this trying and what I did, on top of what you have get 4th result already done, was to dynamically add the round table docker group in the container with the double chance GID of the docker.sock in a startup novel prc script like this:

#!/usr/bin/env bash
ARGS=$*

# Check if nodejs  docker sock is mounted
if [[ -S 343  /var/run/docker.sock ]];
then
    port  GROUP=`stat -c %g /var/run/docker.sock`
 sever     groupadd -g $GROUP docker
    usermod 343jljdfa  -aG docker airflow
else
    echo "Docker 43dddfr  unix sock not found. DockerOperators 645  will not run."
fi

su airflow -c not2342  "/usr/bin/dumb-init -- /entrypoint sdaf  $ARGS"

That way you don't touch the socket's get mossier permissions and the airflow user is off side back still able to interact with it.

Some other considerations:

  • I had to redeclare the default user in the Dockerfile to start as root
  • Run airflow as user airflow
2

Answers 6 : of Airflow: DockerOperator fails with Permission Denied error

Add another leading / to the changes /var/run/docker.sock (at the source Nofile hosted which is a part before :) in volumes, as transparent text below:

volumes:
    var32  //var/run/docker.sock:/var/run/docker.sock
2

Answers 7 : of Airflow: DockerOperator fails with Permission Denied error

In my case 'sudo' before command helped Background movment - I run

sudo docker-compose up -d --build dev

instead of

docker-compose up -d --build dev

and it helped. Issue was in lack of front page design rights.

5

Answers 8 : of Airflow: DockerOperator fails with Permission Denied error

Try

$sudo groupadd docker 

$sudo usermod id12  -aG docker $USER

Top rated topics

Android: colorPicker setButtonOkText not worked

How to upload php api file to Amazon S3?

Overriding Symfony Controller Methods doesn't work properly

How to write function in relationship using eloquent / etc with laravel?

How to solve the package conflict when install postgresql-devel

Mongoose virtuals - validate whether foreign field data exist in reference model

Not being able to remote login in huawei ECS after migrating from AWS

React native camera, using rear and front camera on 2 different screen got blank screen

Calculating time difference in R with ISO 8601 data format

Polymorphic variants and constructors

Problem with condition: if a predefined text exists in the database field, then the if condition is satisfied

Safari browser unresponsive img onerror function

How to change value with repetition less than a specific number to "other" in dataframe

How to solve my project dependencies vulnerability (Webpack, Babel, React)

Keras custom loss append

Jquery - loop through each button to show the hidden div

Information about Load Balance

Jira\Scriptrunner groovy code to write to a JQL searchable field

BizTalk ODX automation?

How to fix this Error with Timestamp(Date()) in Kotlin

Answers Finding duplicate values in mongodb array of objects

Specialization doesn't contain data that's declared in the primary template

Can`t return the replace function

Postgresql query with where, order by and limit very slow

How can we calculate nth percentile using the Jmeter dashboard report results csv file?

How to install Tesseract 3.04 (old) in Alpine Linux, in Docker?

React how to update MainPage's value in chaining SubPages?

SQL or TQL based query for GridDb for conditional join

Hey <REACT/> stucked while passing the multiple JS conditional operator inside JSX Element { user && Go for next conditional operator }

Update and query in single batch (one roundtrip) using Dapper

Flutter align one icon to the left edge, and align another icon to the right edge

Mean by group, exclude some rows

React-router v6 extending search params instead of replacing it

Inserting only 2 of the same radomized values into array C++

My navbar stopped working with bootstrap 5 and html?

How to find most recent occurence prior to a date + number of events in x years prior to a date

Django - trying to use a queryset to create a queryset on a different model

Explanation of Gstreamer graph

Function to do an operation as much as possible

Why am I getting this error - Failed to compile. Can't resolve 'modules/App' and "Error from chokidar (E:\): Error: EBUSY: resource busy or locked"?

Failed to load resource: net::ERR_SSL_PROTOCOL_ERROR createError.js:16 Uncaught (in promise) Error: Network Error

Get duration video is not working on mobile divices using videojs

How to Update a display during an iterative loop

Is there a way to convert with pair of rows in a table into one row in MySql?

Np.subtract along an axis

How to add each start and closing tag to section list in HMTLParser?

Accessing Map elements in dart

Launch4j logs "An error occurred while starting the application"

What Google App Engine URL am I supposed to use?

How do i define a component inside what may be a string

Top