Need to choose the right Docker container for a new project but don’t know where to start? Want to see how your container is built and see what lives inside it? Wondering how you can effectively achieve container best practices (opens new window)?
The Slim Developer Platform allows you to search containers from popular repositories and understand how they get created. It gives you a great starting point for future optimizations, and can be combined with DockerSlim (opens new window) to create production-ready containers with minimal fuss.
Here’s how to use our web portal.
# 1. Create an Account
You can join by clicking this link (opens new window) or those on our Slim.AI homepage. We are in our early days, and may limit the number of new users allowed at certain points to ensure we're delivering a high-quality product.
Accounts are free and there is no charge to use the platform at this time. We're container enthusiasts, not salesfolk, so know that your privacy and security are founding principles of our business. We won't bug you with useless emails or sales pitches. We do appreciate getting your feedback on what we're building.
If you already have an account, you can simply visit portal.slim.dev/login (opens new window) to log in. On successful login, you will see the container search interface. Click on your username to see account information or switch to the Dark Mode UI if that’s your preference. You’ll also notice a Feedback tab on the left — your feedback helps guide our roadmap and we really appreciate it.
# 2. Find a container
From the search interface, you can find containers from multiple container registries — including Docker Hub and Quay.
You can look for images to start your project in two ways:
Simply search for a container using our search interface. You can search by container name, tag, or pull command. We'll search public registries on Docker Hub and Quay, as well as any Connected Registries you've authenticated already. Search results are filterable by source.
We’ve curated a list of images in major subject matter areas to help you find the best images to start your project or find the containers you need to develop your app. Have suggestions for categories? Let us know in Discord. (opens new window)
Once on the list page, matching images will appear in a list along with basic metadata. Clicking on an image listing will take you to the image's profile page. Simply click on the image card to go to the profile page.
# 3. Container Profile
Once you’ve found an image that looks interesting, you can select a version from the drop-down to inspect it further. The profile page gives you a view of artifacts common to the container repository.
# Available Versions
Available versions are listed in the profile page. Clicking on the version row will scan the image and bring you to the Version Detail page for that image version.
In the menu on the right-hand side of each you, you'll find a menu with links to:
View Version - This option scans the image and brings you to the Version Detail page.
Add to Favorites - This will add the image version to your **Favorites **collection.
Compare Versions - This option allows you to choose two versions of the same image and compare them using our Diff feature. If available, you may find the Alpine Linux version or any maintainer supported “slim” versions that have already been optimized by the maintainers. These images may be more appropriate to your use case, but keep in mind that starting with a bare-bones image may cause headaches later in development.
You’ll find any public documentation from the image’s README file, along with any links or instructions provided by the maintainer.
# 4. Version Detail Page
In the Explorer tab, you’ll be able to see exactly how an image builds a container.
Understanding container construction is the single most important step for following container best practices. Optimizing this construction leads to smaller containers with shorter build times, with has long-term benefits for any developer workflow.
Containers have three main elements: Layers, Files, and Instructions. These three elements interact during the build process and ultimately determine what exists inside the final container. Generally, the more layers, files, and instructions your build process containers, the larger, slower, and less secure your resulting container will be.
Select "dark mode" in the username drop-down to see this UI.
Once the image is analyzed — this may take about 30 seconds to complete — you will be brought to the Overview page for that version.
Here, you can find the metadata relating to the image, including pull commands, OS version, recent updates, entrypoints, executables, and image size.
You’ll also see any ports exposed on the container, ensuring you can access it via usual web access ports (80, 443) or showing assigned ports for application-specific use cases.
In addition to metadata, the follow sections provide a quick view into important details of the container's profile. These details provide information on the container's potential surface exposure to attacks, in addition to a quick view of common definitions useful in debugging.
Other Versions - Similar to the version list on the Profile page, this list allows you to compare over versions of the image, and use the Diff tool to see file-level differences between versions.
Shells - A common pain point in container development is knowing which shell (or shells) are available in your container. This section lists available shells along with their versions and paths for easy interaction. You can also click the Diff icon to diff the currently viewed version with the version listed in that row.
Files with Special Permissions - Nefarious attacks often exploit file permissions to gain access to container files or processes. This section shows which files are granted special permissions and may present security concerns.
Environmental Variables - A common mistake among newer container devs is to store sensitive information in a container's environment variables. Knowing what environmental defaults are set in variables is also useful in debugging.
Volumes - If the container relies on a persistent storage volume — this is common in many Data Storage containers like PostgreSQL or MongoDB — you will see them listed in this section. This is a good indication as to whether the container will persist data upon rebuild or whether it will be erased. Knowing the path to the volume is useful for direct access.
Next, we’ll take a deeper look at the container by clicking the Explorer tab.
In the file explorer, panel you can see the order in which files are created when building a container from the image. Expanding one of the layer nodes gives you a view of the files generated during the build of that image. Files can be filtered by Layer or Type.
Knowing which files are created in each layer gives you a basic understanding of how efficiently the image is built. Efficient containers will usually have their operating systems and core libraries installed in the early stages, with application code, which is more likely to change, coming in later stages.
Clicking a file will open metadata about that file. For text files, you can also click the File Contents tab to see the plain text contents of any file in your container.
Layers are listed in pills across the top of the tab, allowing you to quickly see large image layers and the order in which files and instructions are created in the image.
Instruction panel provides a view of the container build process that shows which instructions in the Dockerfile created which layers and files. This is useful for understanding which commands created which layers when debugging a Dockerfile.
The panel also containers the container startup files (often entrypoints or commands for the container) that indicate what executes when the container is started. These are useful for knowing how to interact with the container.
As a final step, the Slim Developer Platform will provide you with a generated Dockerfile. This Dockerfile is for informational purposes only at this time, but helpful to see and understand how our system thinks about the construction of the image.
We're still in our early days of development. Check back soon for more updates from our roadmap, including new features around Collections, file viewing, and private repository connections.
Looking for more tips and tricks to using Slim Developer Platform and DockerSilm? Join our community (opens new window) to connect with other Docker practitioners and get announcements of new features, instructional content on optimizing containers, and free giveaways.
Want to rock some Codi the Cloud swag? Request stickers and more here. (opens new window)