-
Notifications
You must be signed in to change notification settings - Fork 3
Home
The Container Analysis project gathers information about Docker containers from public repositories. Starting with a Helm index chart file, this Python project will crawl, curate, and output helpful information about Applications which are composed of different containers.
Since IBM Cloud Private's (ICP) inception, Applications have been created which are made up of 1 or many containers and there has been a strong need to know which hardware (architectures) a container can run on. It is important to know where a container is hosted, which versions of the containers are available, and what architectures the container can run on.
Each Application contains Images and each Image contains Tags called containers.
Application's are objects called an App stored in objects/image.py. These are also sometimes called main_images since it contains sub_images.
Images are objects referred to as image_obj or sub_images, since each Image is associated with an Application. An Application typically has many Images.
To crawl dockerhub, a Hub object is created to handle the authentication tokens and packet headers in order to authenticate against hub.docker.com. See objects/hub.py for more information.
Execution of get-image-info.py
Once starting get-image-info.py, the following will happen:
- Python script is started and the Helm index chart is downloaded
- Parse Application names from index.yaml
- Locate link to Application's tarball
- Download tarball of Application
- Extract values.yaml and Chart.yaml
- Move values.yaml into Applications/{app-name}/values.yaml
- Parse values.yaml for images needed by Application
- Parse values.yaml for image repos and image versions (tags)
- Parse Chart.yaml for keywords specified by the Application
- Crawl dockerhub using images, repos, and tags information
- Output Application name, images, tags, and list of supported architectures to CSV
If debug mode is specified, a file called generated_input.yaml will be created. This file contains details about each Application and it's respective Images.
- Ensure project is Python 3 enabled
- Enable support for other Docker repositories besides dockerhub.com
- Gather more information about containers for cross-validation:
- Utilize 'keywords' associated with Applications
- Crawl git repos parsing READMEs
- Host this project
- Change the output from CSV to a more interactive GUI
- Create a Wiki or some other type of in-depth documentation
Please read the Contributing guide