Skip to main content

dockter: The doctor for your Dockerfiles

Project description

Dockter: the doctor for your Dockerfiles

The objective of Dockter is to make your Dockerfiles better, it will make sure that your Dockerfiles:

  • build secure images
  • build smaller images
  • build faster
  • follow best practices
  • are pretty formatted

DevOps lifecycle

Typically, a CI/CD pipeline consists of roughly the following steps:

  • lint code
  • build Docker image
  • run tests in Docker image
  • scan image for vulnerabilities (hopefully)
  • push image to registry
  • deploy image

Dockter fits into the first stage and aims to prevent building an image that exposes credentials or contains vulnerabilities, which at the bare minimum saves CI/CD minutes.

Separate processes like container registry scanning will also run, but they may run only after an image has been pushed, potentially already exposing a vulnerable image to the public.

What makes Dockter special?

Good question, Dockter is the byproduct of a much bigger product, GitLab AI Assist, as a first starting point, Dockerfiles were chosen. A parser was developed to fully parse Dockerfiles in a format that is designed for machine learning. In order to train ML models, there is a need to create a large, rich dataset and in order to do that a good analysis of Dockerfiles is needed. Hence, the creation of Dockter. It will start improving your Dockerfiles from day 1 but will become much more powerful in the future, eventually it will automatically create Dockerfiles for you.

No telemetry

No worries, your Dockerfiles remain private, Dockter won't share any telemetry with GitLab, perhaps at some point in time when machine learning models would benefit from user feedback, the option to provide anonymous feedback may be, with plenty of user awareness and opt-in, introduced.

Dynamic parser

The parser behind Dockter has been designed with data and ML in mind, it supports parsing of all Docker instructions and adds support for comments, both actual comments and commented out code.

The parser also supports dynamic analysis, it's context aware, example:

COPY . /app

If a static analysis was performed, it would approve the above instruction, Dockter however will actually list the files that are in . and analyze them against known files to contain credentials, but also filter against your .dockerignore file.

Usage

There are a couple of ways you can use Dockter:

  • Local
  • CI/CD

It is suggested to always use both, but at least run it where you are actually building and publishing your images.

Local usage

You will need to install Dockter from pip

pip install --upgrade dockter --extra-index-url https://gitlab.com/api/v4/projects/36078023/packages/pypi/simple
dockter -d path/to/Dockerfile

If you want more information you can either run it in verbose mode or ask to explain a specific rule

# Explain rule dfa001
docker -e dfa001

# Run in verbose mode (this will be a lot of text)
dockter -v -d path/to/Dockerfile

You can also use docker:

docker run -it -v $(pwd):/app registry.gitlab.com/gitlab-org/incubation-engineering/ai-assist/dockter/dockter:latest dockter -d docter.Dockerfile

CI/CD

Usage in GitLab CI example:

dockter:
  image: registry.gitlab.com/gitlab-org/incubation-engineering/ai-assist/dockter/dockter:latest
  stage: lint
  script:
    - dockter -d Dockerfile

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pydockter-1.0.0.tar.gz (11.9 kB view details)

Uploaded Source

Built Distribution

pydockter-1.0.0-py3-none-any.whl (11.0 kB view details)

Uploaded Python 3

File details

Details for the file pydockter-1.0.0.tar.gz.

File metadata

  • Download URL: pydockter-1.0.0.tar.gz
  • Upload date:
  • Size: 11.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.10.4

File hashes

Hashes for pydockter-1.0.0.tar.gz
Algorithm Hash digest
SHA256 fa976c814e191fb3c0db6790efeec3ccb74ef937bb851682e172c360fe4c1a39
MD5 309a5dcb1be1638c88ad0fc237cbddff
BLAKE2b-256 a2542bc7012f2147fca352f229b7b58bb8a417f92a814663591269c4ac86e728

See more details on using hashes here.

File details

Details for the file pydockter-1.0.0-py3-none-any.whl.

File metadata

  • Download URL: pydockter-1.0.0-py3-none-any.whl
  • Upload date:
  • Size: 11.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.10.4

File hashes

Hashes for pydockter-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 f9208929226a1b71a6f393a1b78024c6cd5f05ded044561c1628e586cf9dcc22
MD5 abfb2ba4918cc37a8e96e85ffd1ad28b
BLAKE2b-256 9ca933080eea37db3e825f136de9b76b6e6dacfae4120bc4452bbd4386747a0e

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page