2

I have the below simple script which is basically to test whether https://github.com/docker/docker-py is able to run commands inside bitbucket containers:

import docker

CLIENT = docker.DockerClient(base_url="unix://var/run/docker.sock")

for image in CLIENT.images.list():
    print(image)

And below is my relevant pipeline stage:

script:
  - apt-get -y update
  - apt-get install -y git-lfs
  - apt-get install -y libgl1-mesa-glx
  - pip install -r requirements/integration.txt
  - docker images
  - pytest -s -v tests/test_integration_dummy.py

However i see strange log messages like so :

+ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE

+ pytest -s -v tests/test_integration_dummy.py
============================= test session starts ==============================
platform linux -- Python 3.8.7, pytest-6.2.2, py-1.10.0, pluggy-0.13.1 -- /usr/local/bin/python
cachedir: .pytest_cache
rootdir: /opt/atlassian/pipelines/agent/build
plugins: mock-3.5.1, datadir-1.3.1
collecting ... collected 0 items / 1 error

==================================== ERRORS ====================================
_______________ ERROR collecting tests/test_integration_dummy.py _______________
/usr/local/lib/python3.8/site-packages/urllib3/connectionpool.py:699: in urlopen
    httplib_response = self._make_request(
/usr/local/lib/python3.8/site-packages/urllib3/connectionpool.py:394: in _make_request
    conn.request(method, url, **httplib_request_kw)
/usr/local/lib/python3.8/http/client.py:1255: in request
    self._send_request(method, url, body, headers, encode_chunked)
/usr/local/lib/python3.8/http/client.py:1301: in _send_request
    self.endheaders(body, encode_chunked=encode_chunked)
/usr/local/lib/python3.8/http/client.py:1250: in endheaders
    self._send_output(message_body, encode_chunked=encode_chunked)
/usr/local/lib/python3.8/http/client.py:1010: in _send_output
    self.send(msg)
/usr/local/lib/python3.8/http/client.py:950: in send
    self.connect()
/usr/local/lib/python3.8/site-packages/docker/transport/unixconn.py:43: in connect
    sock.connect(self.unix_socket)
E   FileNotFoundError: [Errno 2] No such file or directory

During handling of the above exception, another exception occurred:
/usr/local/lib/python3.8/site-packages/requests/adapters.py:439: in send
    resp = conn.urlopen(
/usr/local/lib/python3.8/site-packages/urllib3/connectionpool.py:755: in urlopen
    retries = retries.increment(
/usr/local/lib/python3.8/site-packages/urllib3/util/retry.py:531: in increment
    raise six.reraise(type(error), error, _stacktrace)
/usr/local/lib/python3.8/site-packages/urllib3/packages/six.py:734: in reraise
    raise value.with_traceback(tb)
/usr/local/lib/python3.8/site-packages/urllib3/connectionpool.py:699: in urlopen
    httplib_response = self._make_request(
/usr/local/lib/python3.8/site-packages/urllib3/connectionpool.py:394: in _make_request
    conn.request(method, url, **httplib_request_kw)
/usr/local/lib/python3.8/http/client.py:1255: in request
    self._send_request(method, url, body, headers, encode_chunked)
/usr/local/lib/python3.8/http/client.py:1301: in _send_request
    self.endheaders(body, encode_chunked=encode_chunked)
/usr/local/lib/python3.8/http/client.py:1250: in endheaders
    self._send_output(message_body, encode_chunked=encode_chunked)
/usr/local/lib/python3.8/http/client.py:1010: in _send_output
    self.send(msg)
/usr/local/lib/python3.8/http/client.py:950: in send
    self.connect()
/usr/local/lib/python3.8/site-packages/docker/transport/unixconn.py:43: in connect
    sock.connect(self.unix_socket)
E   urllib3.exceptions.ProtocolError: ('Connection aborted.', FileNotFoundError(2, 'No such file or directory'))

During handling of the above exception, another exception occurred:
/usr/local/lib/python3.8/site-packages/docker/api/client.py:214: in _retrieve_server_version
    return self.version(api_version=False)["ApiVersion"]
/usr/local/lib/python3.8/site-packages/docker/api/daemon.py:181: in version
    return self._result(self._get(url), json=True)
/usr/local/lib/python3.8/site-packages/docker/utils/decorators.py:46: in inner
    return f(self, *args, **kwargs)
/usr/local/lib/python3.8/site-packages/docker/api/client.py:237: in _get
    return self.get(url, **self._set_request_timeout(kwargs))
/usr/local/lib/python3.8/site-packages/requests/sessions.py:555: in get
    return self.request('GET', url, **kwargs)
/usr/local/lib/python3.8/site-packages/requests/sessions.py:542: in request
    resp = self.send(prep, **send_kwargs)
/usr/local/lib/python3.8/site-packages/requests/sessions.py:655: in send
    r = adapter.send(request, **kwargs)
/usr/local/lib/python3.8/site-packages/requests/adapters.py:498: in send
    raise ConnectionError(err, request=request)
E   requests.exceptions.ConnectionError: ('Connection aborted.', FileNotFoundError(2, 'No such file or directory'))

During handling of the above exception, another exception occurred:
tests/test_integration_dummy.py:5: in <module>
    CLIENT = docker.DockerClient(base_url="unix://var/run/docker.sock")
/usr/local/lib/python3.8/site-packages/docker/client.py:45: in __init__
    self.api = APIClient(*args, **kwargs)
/usr/local/lib/python3.8/site-packages/docker/api/client.py:197: in __init__
    self._version = self._retrieve_server_version()
/usr/local/lib/python3.8/site-packages/docker/api/client.py:221: in _retrieve_server_version
    raise DockerException(
E   docker.errors.DockerException: Error while fetching server API version: ('Connection aborted.', FileNotFoundError(2, 'No such file or directory'))
=========================== short test summary info ============================
ERROR tests/test_integration_dummy.py - docker.errors.DockerException: Error ...
!!!!!!!!!!!!!!!!!!!! Interrupted: 1 error during collection !!!!!!!!!!!!!!!!!!!!
=============================== 1 error in 0.75s ===============================
Searching for test report files in directories named [test-results, failsafe-reports, test-reports, surefire-reports] down to a depth of 4
Finished scanning for test reports. Found 0 test report files.
Merged test suites, total number tests is 0, with 0 failures and 0 errors.

So it is quite clear that there is docker inside the container then why is not being able to connect to it .

Any clues would be greatly appreciated.

Subhayan Bhattacharya
  • 5,407
  • 7
  • 42
  • 60

1 Answers1

0

did you add docker as service in bitbucket pipeline step?

   - step:
      name: Test
      services:
        - docker
      caches:
        - pip
        - docker
      script:
        - apt-get -y update
        - apt-get install -y git-lfs
        - apt-get install -y libgl1-mesa-glx
        - pip install -r requirements/integration.txt
        - docker images
        - pytest -s -v tests/test_integration_dummy.py
chetan singhal
  • 948
  • 1
  • 13
  • 36