{"id":329282,"date":"2023-09-04T13:00:00","date_gmt":"2023-09-04T13:00:00","guid":{"rendered":"https:\/\/pyimagesearch.com\/?p=40408"},"modified":"2023-09-04T13:00:00","modified_gmt":"2023-09-04T13:00:00","slug":"getting-started-with-docker-for-machine-learning","status":"publish","type":"post","link":"https:\/\/itteacheritfreelance.hk\/wordpress\/index.php\/2023\/09\/04\/getting-started-with-docker-for-machine-learning\/","title":{"rendered":"Getting Started with Docker for Machine Learning"},"content":{"rendered":"<p class=\"syndicated-attribution\"><meta name= \\\"keywords \\\" content= \\\"\u96fb\u5b50\u8a08\u7b97\u6a5f, \u6559\u80b2, IT \u96fb\u8166\u73ed,\u96fb\u8166\u88dc\u7fd2\uff0c \u96fb\u8166\u73ed\uff0c \u5bb6\u6559\uff0c \u79c1\u4eba\u8001\u5e2b\uff0c \u8cc7\u8a0a\u6280\u8853\uff0c \u7a0b\u5e8f\u8a2d\u8a08\uff0c \u96fb\u5b50\u8a08\u7b97\u6a5f\uff0c \u904a\u6232\uff0c \u860b\u679c\uff0c \u96fb\u5f71\uff0c \u8a08\u7b97\u6a5f\uff0c\u7de8\u78bc\uff0c Java\uff0c C\/C++\uff0c JavaScript\uff0c PHP\uff0c HTML\uff0c CSS\uff0c MySQL\uff0c mobile\uff0c Android\uff0c \u52d5\u6f2b\uff0c Python\uff0c teacher\uff0c \u88dc\u7fd2\uff0c \u96fb\u8166\u88dc\u7fd2 \u8cc7\u8a0a, \u7535\u5b50\u8ba1\u7b97\u673a, IT ,Game, apple, movie, Computer,student,Java,\u6559\u80b2, ,\u5b66\u751f, \u5b66\u4e60, learn, \u6559\u5b66,  Android, apple,anime, animation, \u4fe1\u606f\u6280\u672f, \u7a0b\u5e8f\u8bbe\u8ba1, \u79fb\u52a8\u7535\u8bdd, \u8cc7\u8a0a\u79d1\u6280,Game, Jeu, Juego,Call Of Duty ,\u4f7f\u547d\u53ec\u559a , \u6e38\u620f, \u7535\u5b50\u6e38\u620f,, \u591a\u4eba\u7535\u5b50\u6e38\u620f, \u7f51\u7edc\u6e38\u620f\uff0conline\uff0conline game, \u624b\u673a\u6e38\u620f, mobile \\\"><\/p>\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" id=\"TOC\"\/>\n<div class=\"yoast-breadcrumbs\"><span><span><a href=\"https:\/\/pyimagesearch.com\/\">Home<\/a><\/span><\/div>\n<h2><strong>Table of Contents<\/strong><\/h2>\n<div class=\"toc\">\n<ul>\n<li id=\"TOCh2BPTitle\"><a rel=\"noopener\"  href=\"https:\/\/pyimagesearch.com\/2023\/09\/04\/getting-started-with-docker-for-machine-learning\/#h2BPTitle\">Getting Started with Docker for Machine Learning<\/a><\/li>\n<ul>\n<li id=\"TOCh3Overview\"><a rel=\"noopener\"  href=\"https:\/\/pyimagesearch.com\/2023\/09\/04\/getting-started-with-docker-for-machine-learning\/#h3Overview\">Overview: Why the Need?<\/a><\/li>\n<li id=\"TOCh3Containers\"><a rel=\"noopener\"  href=\"https:\/\/pyimagesearch.com\/2023\/09\/04\/getting-started-with-docker-for-machine-learning\/#h3Containers\">What Are Containers?<\/a><\/li>\n<li id=\"TOCh3VMs\"><a rel=\"noopener\"  href=\"https:\/\/pyimagesearch.com\/2023\/09\/04\/getting-started-with-docker-for-machine-learning\/#h3VMs\">How Do Containers Differ from Virtual Machines?<\/a><\/li>\n<li id=\"TOCh3Popular\"><a rel=\"noopener\"  href=\"https:\/\/pyimagesearch.com\/2023\/09\/04\/getting-started-with-docker-for-machine-learning\/#h3Popular\">Most Popular Container Images<\/a><\/li>\n<ul>\n<li id=\"TOCh4TensorFlow\"><a rel=\"noopener\"  href=\"https:\/\/pyimagesearch.com\/2023\/09\/04\/getting-started-with-docker-for-machine-learning\/#h4TensorFlow\">TensorFlow<\/a><\/li>\n<li id=\"TOCh4PyTorch\"><a rel=\"noopener\"  href=\"https:\/\/pyimagesearch.com\/2023\/09\/04\/getting-started-with-docker-for-machine-learning\/#h4PyTorch\">PyTorch<\/a><\/li>\n<li id=\"TOCh4Python\"><a rel=\"noopener\"  href=\"https:\/\/pyimagesearch.com\/2023\/09\/04\/getting-started-with-docker-for-machine-learning\/#h4Python\">Python<\/a><\/li>\n<li id=\"TOCh4NGINX\"><a rel=\"noopener\"  href=\"https:\/\/pyimagesearch.com\/2023\/09\/04\/getting-started-with-docker-for-machine-learning\/#h4NGINX\">NGINX<\/a><\/li>\n<\/ul>\n<li id=\"TOCh3Install\"><a rel=\"noopener\"  href=\"https:\/\/pyimagesearch.com\/2023\/09\/04\/getting-started-with-docker-for-machine-learning\/#h3Install\">Install Docker<\/a><\/li>\n<li id=\"TOCh3Manually\"><a rel=\"noopener\"  href=\"https:\/\/pyimagesearch.com\/2023\/09\/04\/getting-started-with-docker-for-machine-learning\/#h3Manually\">Install Docker Manually<\/a><\/li>\n<li id=\"TOCh3Desktop\"><a rel=\"noopener\"  href=\"https:\/\/pyimagesearch.com\/2023\/09\/04\/getting-started-with-docker-for-machine-learning\/#h3Desktop\">Install Docker Desktop<\/a><\/li>\n<li id=\"TOCh3NVIDIA\"><a rel=\"noopener\"  href=\"https:\/\/pyimagesearch.com\/2023\/09\/04\/getting-started-with-docker-for-machine-learning\/#h3NVIDIA\">Install NVIDIA Container Toolkit<\/a><\/li>\n<\/ul>\n<li id=\"TOCh2Summary\"><a rel=\"noopener\"  href=\"https:\/\/pyimagesearch.com\/2023\/09\/04\/getting-started-with-docker-for-machine-learning\/#h2Summary\">Summary<\/a><\/li>\n<ul>\n<li id=\"TOCh3Citation\"><a rel=\"noopener\"  href=\"https:\/\/pyimagesearch.com\/2023\/09\/04\/getting-started-with-docker-for-machine-learning\/#h3Citation\">Citation Information<\/a><\/li>\n<\/ul>\n<\/ul>\n<\/div>\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" id=\"h2BPTitle\"\/>\n<h2><a href=\"https:\/\/pyimagesearch.com\/2023\/09\/04\/getting-started-with-docker-for-machine-learning\/#TOCh2BPTitle\"><strong>Getting Started with Docker for Machine Learning<\/strong><\/a><\/h2>\n<p>In this tutorial, you will learn what Containers are, how they differ from Virtual Machines (VMs), and what Docker is. Finally, we will top it off by installing Docker on our local machine with simple and easy-to-follow steps.<\/p>\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large is-resized\"><a href=\"https:\/\/pyimagesearch.com\/wp-content\/uploads\/2023\/09\/docker-1-featured.png\"  rel=\"noreferrer noopener\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/b2633864.smushcdn.com\/2633864\/wp-content\/uploads\/2023\/09\/docker-1-featured-1024x575.png?lossy=2&#038;strip=1&#038;webp=1\" alt=\"\" class=\"wp-image-41219\" width=\"700\" height=\"393\" srcset=\"https:\/\/b2633864.smushcdn.com\/2633864\/wp-content\/uploads\/2023\/09\/docker-1-featured.png?size=126x71&amp;lossy=2&amp;strip=1&amp;webp=1 126w, https:\/\/b2633864.smushcdn.com\/2633864\/wp-content\/uploads\/2023\/09\/docker-1-featured-300x169.png?lossy=2&amp;strip=1&amp;webp=1 300w, https:\/\/b2633864.smushcdn.com\/2633864\/wp-content\/uploads\/2023\/09\/docker-1-featured.png?size=378x212&amp;lossy=2&amp;strip=1&amp;webp=1 378w, https:\/\/b2633864.smushcdn.com\/2633864\/wp-content\/uploads\/2023\/09\/docker-1-featured.png?size=504x283&amp;lossy=2&amp;strip=1&amp;webp=1 504w, https:\/\/b2633864.smushcdn.com\/2633864\/wp-content\/uploads\/2023\/09\/docker-1-featured.png?size=630x354&amp;lossy=2&amp;strip=1&amp;webp=1 630w, https:\/\/b2633864.smushcdn.com\/2633864\/wp-content\/uploads\/2023\/09\/docker-1-featured-768x431.png?lossy=2&amp;strip=1&amp;webp=1 768w, https:\/\/b2633864.smushcdn.com\/2633864\/wp-content\/uploads\/2023\/09\/docker-1-featured-1024x575.png?lossy=2&amp;strip=1&amp;webp=1 1024w, https:\/\/b2633864.smushcdn.com\/2633864\/wp-content\/uploads\/2023\/09\/docker-1-featured.png?lossy=2&amp;strip=1&amp;webp=1 1080w, https:\/\/b2633864.smushcdn.com\/2633864\/wp-content\/uploads\/2023\/09\/docker-1-featured-1536x863.png?lossy=2&amp;strip=1&amp;webp=1 1536w, https:\/\/b2633864.smushcdn.com\/2633864\/wp-content\/uploads\/2023\/09\/docker-1-featured-2048x1151.png?lossy=2&amp;strip=1&amp;webp=1 2048w\" sizes=\"(max-width: 630px) 100vw, 630px\" \/><\/a><\/figure>\n<\/div>\n<p>This lesson is the 1st of a 3-part series on <strong>Docker for Machine Learning<\/strong>:<\/p>\n<ol>\n<li><a href=\"https:\/\/pyimg.co\/k3xw6\"  rel=\"noreferrer noopener\"><strong><em>Getting Started with Docker for Machine Learning<\/em><\/strong><\/a><strong> (this tutorial)<\/strong><\/li>\n<li><em>Lesson 2<\/em><\/li>\n<li><em>Lesson 3<\/em><\/li>\n<\/ol>\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" id=\"h3Overview\"\/>\n<h3><a href=\"https:\/\/pyimagesearch.com\/2023\/09\/04\/getting-started-with-docker-for-machine-learning\/#TOCh3Overview\"><strong>Overview: Why the Need?<\/strong><\/a><\/h3>\n<p>Envision yourself as an <strong>ML Engineer<\/strong> at one of the world\u2019s largest companies. You make a Machine Learning (ML) pipeline that does everything, from gathering and preparing data to making predictions. All the individual blocks are in the proper order, and you ensure everything works like a well-oiled machine.<\/p>\n<p>After verifying everything, you hand over this pipeline to a colleague to get a review before your pipeline is deployed to perform <em>real-time streaming predictions<\/em>. But, alas! The pipeline broke down when moved from your computer to your colleague\u2019s computer.<\/p>\n<p>Switching gears, imagine yourself being part of a high-tech research lab working with Machine Learning algorithms. You quickly iterate with several different things daily, each with additional requirements and dependencies. One day, you are working with TPUs to run JAX code. Next, you\u2019re trying to make your app available to the world as an API.<\/p>\n<p>In these cases, you\u2019d also encounter annoying times when your entire environment is polluted by one dirty install. Repairing such issues becomes <strong>time-consuming<\/strong>, especially in research iteration where time is <strong>crucial<\/strong>.<\/p>\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" id=\"h3Containers\"\/>\n<h3><a href=\"https:\/\/pyimagesearch.com\/2023\/09\/04\/getting-started-with-docker-for-machine-learning\/#TOCh3Containers\"><strong>What Are Containers?<\/strong><\/a><\/h3>\n<p>In the cases we just saw, the problem patterns stem from the <em>tight coupling<\/em> between the <strong>software<\/strong> and <strong>hardware<\/strong> we develop.<\/p>\n<p>This can be a <strong>major impediment<\/strong> to developing software that \u201cjust works\u201d on all systems. When we look at this problem in the Machine Learning context, this can bring quick iteration to a halt.<\/p>\n<p>What if we <strong>decouple<\/strong> the dependencies of the software we write from the hardware it works on? Could our software development environment be wrapped into a neat and simple package that can be shifted to any machine we want, irrespective of hardware or other dependency issues? <\/p>\n<p>Enter the concept of <strong>Containers<\/strong>. Containers are <strong><em>lightweight packages<\/em><\/strong> that act as portable, sandboxed environments for use on any hardware that supports them. This would include code, dependencies, files, operating systems, runtime, and system settings.<\/p>\n<p>Let\u2019s break that down. Containers are lightweight since they do not store Operating System (OS) images within them while using a <strong>snapshot<\/strong> instead. They virtualize the resources available to the OS for a specific process concerning CPU usage, memory, and storage. This allows your process to be portable and sandboxed from all other processes running on the host.<\/p>\n<p>Container runtimes are consistent, meaning they would work precisely the same whether you\u2019re on a <em>Dell<\/em> laptop with an <em>AMD<\/em> CPU, a top-notch <em>MacBook Pro<\/em>, or an old <em>Intel Lenovo ThinkPad<\/em> from 2015. <\/p>\n<p>One of the most popular methods of creating and working with containers is by using <a href=\"https:\/\/www.docker.com\/\"  rel=\"noreferrer noopener\"><strong>Docker<\/strong><\/a>. It is a platform that provides a <em>batteries-included<\/em> experience for <strong>creating<\/strong>, <strong>deploying<\/strong>, and <strong>working<\/strong> with containers.<\/p>\n<p>Throughout this tutorial, we will use Docker as the software for manipulating and working with containers. Some other alternatives to Docker include <a href=\"https:\/\/linuxcontainers.org\/\"  rel=\"noreferrer noopener\">LXC (Linux Container Runtime)<\/a> and <a href=\"https:\/\/podman.io\/\"  rel=\"noreferrer noopener\">Podman<\/a>.<\/p>\n<p><strong><em>Note: <\/em><\/strong><em>Something of this sort would be useful to an ML Engineer such as yourself because it allows you to expose services from isolated runtimes and ensure horizontal scalability without any hassle.<\/em><\/p>\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" id=\"h3VMs\"\/>\n<h3><a href=\"https:\/\/pyimagesearch.com\/2023\/09\/04\/getting-started-with-docker-for-machine-learning\/#TOCh3VMs\"><strong>How Do Containers Differ from Virtual Machines?<\/strong><\/a><\/h3>\n<p>A question that may have popped up by now should be how containers differ from traditional <a href=\"https:\/\/pyimagesearch.com\/?s=virtual+machines\"  rel=\"noreferrer noopener\">Virtual Machines<\/a>. Let\u2019s see how they <strong>diverge<\/strong>.<\/p>\n<p>The most notable difference between a virtual machine (VM) and a container is the level of virtualization. This refers to the introduction of an abstraction layer over the hardware at a level where the resources are allocated and utilized separately from the original OS on the machine. This abstraction layer is also referred to commonly as a <a href=\"https:\/\/www.redhat.com\/en\/topics\/virtualization\/what-is-a-hypervisor\"  rel=\"noreferrer noopener\">hypervisor<\/a>. They tend to have several functions (e.g., creating and deleting VMs, managing, and scheduling them). VMs work to virtualize everything up from the hardware layers on a machine with this layer on top.<\/p>\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter is-resized\"><a href=\"https:\/\/lh3.googleusercontent.com\/lwilSiQt464Mi-p5AW9o1Y2kfclacni0pmbwxuJ7glhmXT7YCjUi--WNXEEUmm0aAPLZe2e4zPlH3GSe2_FLZU0uFESNg_2mgG_DGwMZfOAY1PObJDteStxE35LCoTRkCQHbXk9kz4ANgrEKqcHe57Y\"  rel=\"noreferrer noopener\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/lh3.googleusercontent.com\/lwilSiQt464Mi-p5AW9o1Y2kfclacni0pmbwxuJ7glhmXT7YCjUi--WNXEEUmm0aAPLZe2e4zPlH3GSe2_FLZU0uFESNg_2mgG_DGwMZfOAY1PObJDteStxE35LCoTRkCQHbXk9kz4ANgrEKqcHe57Y\" alt=\"\" width=\"700\" height=\"286\"\/><\/a><figcaption>Difference between a Container and a Virtual Machine (source: (<a href=\"https:\/\/upload.wikimedia.org\/wikipedia\/commons\/0\/0a\/Docker-containerized-and-vm-transparent-bg.png\"  rel=\"noreferrer noopener\">https:\/\/upload.wikimedia.org\/wikipedia\/commons\/0\/0a\/Docker-containerized-and-vm-transparent-bg.png<\/a>).<\/figcaption><\/figure>\n<\/div>\n<p>On the other hand, containers only virtualize up to the software layers of the container engine that handles all the containers present in a system. It does not go down to the hypervisor layer and instead hands over its own control to the original OS on the machine, which is controlled by the container runtime. The container runtime is like a hypervisor but made only on a software level for containers. It does not have direct access to the hardware of the machine.<\/p>\n<p>Virtual machines typically provide higher isolation and security by working directly with the hardware (depending on the type of hypervisor used). In contrast, Containers tend to simply isolate the specific process and filesystem while delegating the grunt work of allocating resources to the host OS itself via the container runtime.<\/p>\n<p>When working with different Operating Systems vis-\u00e0-vis Containers, they tend only to have a snapshot of an OS instead of the full OS image, making them significantly lighter than traditional VMs. But, this brings about a problem wherein we must ensure that the container\u2019s OS matches the same kernel as the original OS. That means the container\u2019s OS must have the same format for requesting machine resources as that of the host OS. For that reason, one would see that a Windows container cannot be used on Linux machines. In comparison, Linux containers may be created on Windows machines with the advent of <a href=\"https:\/\/learn.microsoft.com\/en-us\/windows\/wsl\/about\"  rel=\"noreferrer noopener\">WSL2<\/a>.<\/p>\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" id=\"h3Popular\"\/>\n<h3><a href=\"https:\/\/pyimagesearch.com\/2023\/09\/04\/getting-started-with-docker-for-machine-learning\/#TOCh3Popular\"><strong>Most Popular Container Images<\/strong><\/a><\/h3>\n<p>Today, popular software applications have container images available for direct use on any hardware that the user desires. Some notable examples include the following.<\/p>\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" id=\"h4TensorFlow\"\/>\n<h4><a href=\"https:\/\/pyimagesearch.com\/2023\/09\/04\/getting-started-with-docker-for-machine-learning\/#TOCh4TensorFlow\"><strong>TensorFlow<\/strong><\/a><\/h4>\n<p>The container runtime for <a href=\"https:\/\/hub.docker.com\/r\/tensorflow\/tensorflow\/\"  rel=\"noreferrer noopener\">TensorFlow<\/a> acts as a simple method to quickly experiment or iterate with TensorFlow in a throwaway fashion. These images also support interfacing with the GPU, meaning you can leverage it for training your Deep Learning networks written in TensorFlow. Note that, using a GPU typically refers to using NVIDIA CUDA-enabled GPUs (<a href=\"https:\/\/catalog.ngc.nvidia.com\/orgs\/nvidia\/containers\/tensorflow\"  rel=\"noreferrer noopener\">Alternative NVIDIA NGC Container Image here<\/a>).<\/p>\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter is-resized\"><a href=\"https:\/\/lh4.googleusercontent.com\/dzlLMy4ELN3CyhtXJeBOwsL_fnq6tjriJzxmdLiglT_JZk6M5ea8B31ngKIugzFIekDDsTSQc87iN4z5MbJj9q5OY6Na5dZGtvJMAVsC0-Q6TJ8Elcwig4osCRidQ4-0QFuap9aFNMNcgiCsTKvE4QI\"  rel=\"noreferrer noopener\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/lh4.googleusercontent.com\/dzlLMy4ELN3CyhtXJeBOwsL_fnq6tjriJzxmdLiglT_JZk6M5ea8B31ngKIugzFIekDDsTSQc87iN4z5MbJj9q5OY6Na5dZGtvJMAVsC0-Q6TJ8Elcwig4osCRidQ4-0QFuap9aFNMNcgiCsTKvE4QI\" alt=\"\" width=\"700\" height=\"343\"\/><\/a><figcaption>Docker and TensorFlow (source: image created by the author)<\/figcaption><\/figure>\n<\/div>\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" id=\"h4PyTorch\"\/>\n<h4><a href=\"https:\/\/pyimagesearch.com\/2023\/09\/04\/getting-started-with-docker-for-machine-learning\/#TOCh4PyTorch\"><strong>PyTorch<\/strong><\/a><\/h4>\n<p>The container runtime for <a href=\"https:\/\/hub.docker.com\/r\/pytorch\/pytorch\/\"  rel=\"noreferrer noopener\">PyTorch<\/a> brings torch and torchvision to your runtime, along with all dependencies pre-installed. This allows you to begin your development directly and provides a platform for quick iteration. Similar to TensorFlow, this container image also provides a GPU-compatible version that uses Compute Unified Device Architecture (CUDA) to speed up Tensor processing. (<a href=\"https:\/\/catalog.ngc.nvidia.com\/orgs\/nvidia\/containers\/pytorch\"  rel=\"noreferrer noopener\">Alternative NVIDIA NGC Container Image here<\/a>)<\/p>\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" id=\"h4Python\"\/>\n<h4><a href=\"https:\/\/pyimagesearch.com\/2023\/09\/04\/getting-started-with-docker-for-machine-learning\/#TOCh4Python\"><strong>Python<\/strong><\/a><\/h4>\n<p>The container runtime for <a href=\"https:\/\/hub.docker.com\/_\/python\"  rel=\"noreferrer noopener\">Python<\/a> sets up a Debian Linux instance with Python pre-installed. This is suitable for making a variety of Python applications with other dependencies being added to it at the user\u2019s convenience. This container is commonly used for simpler tasks (e.g., developing web services, APIs, running tests, etc.).  Depending on their host platform, one can choose between using Debian Linux, Alpine Linux, or Windows Server Core versions of this image.<\/p>\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" id=\"h4NGINX\"\/>\n<h4><a href=\"https:\/\/pyimagesearch.com\/2023\/09\/04\/getting-started-with-docker-for-machine-learning\/#TOCh4NGINX\"><strong>NGINX<\/strong><\/a><\/h4>\n<p>The container runtime for <a href=\"https:\/\/hub.docker.com\/_\/nginx\"  rel=\"noreferrer noopener\">NGINX<\/a> sets up a Debian Linux instance with NGINX pre-installed. This allows you to use the popular reverse proxy server with load-balancers and HTTP caches without the hassle of setting it up across different machines. This image is also available in various styles (e.g., the standard Debian Linux base or with an Alpine Linux base).<\/p>\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" id=\"h3Install\"\/>\n<h3><a href=\"https:\/\/pyimagesearch.com\/2023\/09\/04\/getting-started-with-docker-for-machine-learning\/#TOCh3Install\"><strong>Install Docker<\/strong><\/a><\/h3>\n<p>With this information on why Docker containers are so popular, it\u2019s time we install it on our local machine and start making our containers for Machine Learning.<\/p>\n<p>To later work with all the required components of Docker, we install Docker Desktop. It includes a standalone Desktop GUI (graphical user interface) application that simplifies your experience with Docker.<\/p>\n<p>If you are using Ubuntu, Debian, Fedora, Red Hat Enterprise Linux (RHEL), CentOS, or other common Linux Distributions, you can use the official convenience script from Docker by executing the command below.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"shell\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"Getting Started with Docker for Machine Learning\" data-enlighter-group=\"1\">```bash\ncurl https:\/\/get.docker.com | sh \\\n  &amp;&amp; sudo systemctl --now enable docker\n```<\/pre>\n<p>This should set up Docker completely on your system! Skip over the next section to see how you can install Docker Desktop for a GUI-based interface.<\/p>\n<p>If you want to improve your Docker experience for later, you can <a href=\"https:\/\/docs.docker.com\/engine\/install\/linux-postinstall\/\"  rel=\"noreferrer noopener\">follow some convenience-enhancing steps<\/a> for Linux systems. Note that these are optional and are geared toward superusers.<\/p>\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" id=\"h3Manually\"\/>\n<h3><a href=\"https:\/\/pyimagesearch.com\/2023\/09\/04\/getting-started-with-docker-for-machine-learning\/#TOCh3Manually\"><strong>Install Docker Manually<\/strong><\/a><\/h3>\n<p>Now, let\u2019s look at how to install Docker on a Linux system manually. For this example, we will look at a Fedora Linux setup with GNOME. Note, if you are using Ubuntu or any other Linux distribution, you can simply replace most of these commands with the distribution\u2019s respective package manager (\u201capt\u201d for Ubuntu, \u201cpacman\u201d for Arch Linux, \u201cbrew\u201d for Mac, etc.).<\/p>\n<ul>\n<li>Ensure you have <code data-enlighter-language=\"python\" class=\"EnlighterJSRAW\">gnome-terminal<\/code> installed (or the appropriate terminal as required). To do so, use the following command:<\/li>\n<\/ul>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"shell\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"Getting Started with Docker for Machine Learning\" data-enlighter-group=\"2\">```bash \n>> sudo dnf install gnome-terminal\n```<\/pre>\n<ul>\n<li>Set up the Docker package repositories<\/li>\n<\/ul>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"shell\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"Getting Started with Docker for Machine Learning\" data-enlighter-group=\"3\">```bash\n>> sudo dnf -y install dnf-plugins-core\n>> sudo dnf config-manager --add-repo https:\/\/download.docker.com\/linux\/fedora\/docker-ce.repo\n```<\/pre>\n<ul>\n<li>Install Docker Engine, containerd, Docker build kit, Docker Compose, and related command line interfaces (CLIs)<\/li>\n<\/ul>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"shell\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"Getting Started with Docker for Machine Learning\" data-enlighter-group=\"4\">```bash\n>> sudo dnf install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin\n```<\/pre>\n<p>Once this process is complete, you will have a working installation of Docker on your system!<\/p>\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" id=\"h3Desktop\"\/>\n<h3><a href=\"https:\/\/pyimagesearch.com\/2023\/09\/04\/getting-started-with-docker-for-machine-learning\/#TOCh3Desktop\"><strong>Install Docker Desktop<\/strong><\/a><\/h3>\n<p>Now, let\u2019s look at how to install Docker Desktop on your system. Follow along!<\/p>\n<ul>\n<li>Download the RPM (Red Hat Package Management system) file for <a href=\"https:\/\/desktop.docker.com\/linux\/main\/amd64\/docker-desktop-4.20.1-x86_64.rpm\"  rel=\"noreferrer noopener\">Docker Desktop<\/a> (<strong><em>Note:<\/em><\/strong> This link may change in the future. To get the latest link, please <a href=\"https:\/\/www.docker.com\/products\/docker-desktop\/\"  rel=\"noreferrer noopener\">look here<\/a>.)<\/li>\n<li>Use the following command to install it:<\/li>\n<\/ul>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"shell\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"Getting Started with Docker for Machine Learning\" data-enlighter-group=\"5\">```bash\n>> sudo dnf install .\/docker-desktop-&lt;version>-&lt;arch>.rpm\n```<\/pre>\n<ul>\n<li>Start Docker Desktop<\/li>\n<\/ul>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"shell\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"Getting Started with Docker for Machine Learning\" data-enlighter-group=\"6\">```bash\nsystemctl --user start docker-desktop\n```<\/pre>\n<p>The last command should launch a GUI window for Docker Desktop. You should now have a full installation of all the components required to work with Docker and a GUI application to handle it too!<\/p>\n<p>Installation of Docker Desktop can be performed for other Linux distributions or Windows by following the instructions given on <a href=\"https:\/\/docs.docker.com\/desktop\/\"  rel=\"noreferrer noopener\">their official website<\/a> as well.<\/p>\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" id=\"h3NVIDIA\"\/>\n<h3><a href=\"https:\/\/pyimagesearch.com\/2023\/09\/04\/getting-started-with-docker-for-machine-learning\/#TOCh3NVIDIA\"><strong>Install NVIDIA Container Toolkit<\/strong><\/a><\/h3>\n<p>If you have a CUDA-enabled NVIDIA GPU, you can also install the NVIDIA Container Toolkit to use the GPU for your workflows. To do so, follow the <a href=\"https:\/\/docs.nvidia.com\/datacenter\/cloud-native\/container-toolkit\/install-guide.html\"  rel=\"noreferrer noopener\">instructions here<\/a>. <\/p>\n<p>Note that to install the toolkit and have it work correctly, you must have previously installed the appropriate CUDA drivers for your GPU. <\/p>\n<ul>\n<li>Set up the package repository and the GPG (GNU Privacy Guard) Key<\/li>\n<\/ul>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"shell\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"Getting Started with Docker for Machine Learning\" data-enlighter-group=\"7\">```bash\n$ distribution=$(. \/etc\/os-release;echo $ID$VERSION_ID) \\\n      &amp;&amp; curl -fsSL https:\/\/nvidia.github.io\/libnvidia-container\/gpgkey | sudo gpg --dearmor -o \/usr\/share\/keyrings\/nvidia-container-toolkit-keyring.gpg \\\n      &amp;&amp; curl -s -L https:\/\/nvidia.github.io\/libnvidia-container\/$distribution\/libnvidia-container.list | \\\n            sed 's#deb https:\/\/#deb [signed-by=\/usr\/share\/keyrings\/nvidia-container-toolkit-keyring.gpg] https:\/\/#g' | \\\n            sudo tee \/etc\/apt\/sources.list.d\/nvidia-container-toolkit.list\n\n```<\/pre>\n<ul>\n<li>Update your system<\/li>\n<\/ul>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"shell\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"Getting Started with Docker for Machine Learning\" data-enlighter-group=\"8\">```bash\nsudo apt-get update\n```<\/pre>\n<ul>\n<li>Install <code data-enlighter-language=\"python\" class=\"EnlighterJSRAW\">nvidia-container-toolkit<\/code> as a package<\/li>\n<\/ul>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"shell\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"Getting Started with Docker for Machine Learning\" data-enlighter-group=\"9\">```bash\nsudo apt-get install -y nvidia-container-toolkit-base nvidia-container-toolkit\n```<\/pre>\n<ul>\n<li>Configure Docker such that it can recognize <code data-enlighter-language=\"python\" class=\"EnlighterJSRAW\">nvidia-container-toolkit<\/code> and work with it<\/li>\n<\/ul>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"shell\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"Getting Started with Docker for Machine Learning\" data-enlighter-group=\"10\">```bash\nsudo nvidia-ctk runtime configure --runtime=docker\n```<\/pre>\n<ul>\n<li>Restart the daemon to activate changes<\/li>\n<\/ul>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"shell\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"Getting Started with Docker for Machine Learning\" data-enlighter-group=\"11\">```bash\nsudo systemctl restart docker\n```<\/pre>\n<ul>\n<li>Now, let\u2019s try running a base CUDA container. Enter the following command:<\/li>\n<\/ul>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"shell\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"Getting Started with Docker for Machine Learning\" data-enlighter-group=\"12\">```bash\nsudo docker run --rm --runtime=nvidia --gpus all nvidia\/cuda:11.6.2-base-ubuntu20.04 nvidia-smi\n```<\/pre>\n<ul>\n<li>You should see a table giving information about the GPU you have on your device, along with information on the CUDA driver version.<\/li>\n<\/ul>\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter is-resized\"><a href=\"https:\/\/lh4.googleusercontent.com\/rsH5fPcW7CerGvW68-liXjh7KneKRQ_hbNiyPZ7Z72V_JJ-rc5r4rB2a2imPpIEkic2kvCdm23f1IavCwbZFeeGccDYnu8Jq8EHSn4LZ3Otk-EkLgfdNqrEWSxGvjaHvLT-u1xYZnDWPzUoMtIdG2T0\"  rel=\"noreferrer noopener\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/lh4.googleusercontent.com\/rsH5fPcW7CerGvW68-liXjh7KneKRQ_hbNiyPZ7Z72V_JJ-rc5r4rB2a2imPpIEkic2kvCdm23f1IavCwbZFeeGccDYnu8Jq8EHSn4LZ3Otk-EkLgfdNqrEWSxGvjaHvLT-u1xYZnDWPzUoMtIdG2T0\" alt=\"\" width=\"700\" height=\"328\"\/><\/a><figcaption>Example output of <code>nvidia-smi<\/code> (source: image created by the author).<\/figcaption><\/figure>\n<\/div>\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n<p><strong><br \/><\/strong><\/p>\n<div id=\"pitch\" style=\"padding: 40px; width: 100%; background-color: #F4F6FA;\">\n<h3>What&#8217;s next? I recommend <a  href=\"https:\/\/pyimagesearch.com\/pyimagesearch-university\/?utm_source=blogPost&#038;utm_medium=bottomBanner&#038;utm_campaign=What%27s%20next%3F%20I%20recommend\">PyImageSearch University<\/a>.<\/h3>\n<p>\t<script src=\"https:\/\/fast.wistia.com\/embed\/medias\/kno0cmko2z.jsonp\" async><\/script><script src=\"https:\/\/fast.wistia.com\/assets\/external\/E-v1.js\" async><\/script><\/p>\n<div class=\"wistia_responsive_padding\" style=\"padding:56.25% 0 0 0;position:relative;\">\n<div class=\"wistia_responsive_wrapper\" style=\"height:100%;left:0;position:absolute;top:0;width:100%;\">\n<div class=\"wistia_embed wistia_async_kno0cmko2z videoFoam=true\" style=\"height:100%;position:relative;width:100%\">\n<div class=\"wistia_swatch\" style=\"height:100%;left:0;opacity:0;overflow:hidden;position:absolute;top:0;transition:opacity 200ms;width:100%;\"><img decoding=\"async\" src=\"https:\/\/fast.wistia.com\/embed\/medias\/kno0cmko2z\/swatch\" style=\"filter:blur(5px);height:100%;object-fit:contain;width:100%;\" alt=\"\" aria-hidden=\"true\" onload=\"this.parentNode.style.opacity=1;\" \/><\/div>\n<\/div>\n<\/div>\n<\/div>\n<div style=\"margin-top: 32px; margin-bottom: 32px; \">\n\t\t<strong>Course information:<\/strong><br \/>\n\t\t80 total classes \u2022 105+ hours of on-demand code walkthrough videos \u2022 Last updated: September 2023<br \/>\n\t\t<span style=\"color: #169FE6;\">\u2605\u2605\u2605\u2605\u2605<\/span> 4.84 (128 Ratings) \u2022 16,000+ Students Enrolled\n\t<\/div>\n<p><strong>I strongly believe that if you had the right teacher you could <em>master<\/em> computer vision and deep learning.<\/strong><\/p>\n<p>Do you think learning computer vision and deep learning has to be time-consuming, overwhelming, and complicated? Or has to involve complex mathematics and equations? Or requires a degree in computer science?<\/p>\n<p>That\u2019s <em>not<\/em> the case.<\/p>\n<p>All you need to master computer vision and deep learning is for someone to explain things to you in <em>simple, intuitive<\/em> terms. <em>And that\u2019s exactly what I do<\/em>. My mission is to change education and how complex Artificial Intelligence topics are taught.<\/p>\n<p>If you&#8217;re serious about learning computer vision, your next stop should be PyImageSearch University, the most comprehensive computer vision, deep learning, and OpenCV course online today. Here you\u2019ll learn how to <em>successfully<\/em> and <em>confidently<\/em> apply computer vision to your work, research, and projects. Join me in computer vision mastery.<\/p>\n<p><strong>Inside PyImageSearch University you&#8217;ll find:<\/strong><\/p>\n<ul style=\"margin-left: 0px;\">\n<li style=\"list-style: none;\">&check; <strong>80 courses<\/strong> on essential computer vision, deep learning, and OpenCV topics<\/li>\n<li style=\"list-style: none;\">&check; <strong>80 Certificates<\/strong> of Completion<\/li>\n<li style=\"list-style: none;\">&check; <strong>105+ hours<\/strong> of on-demand video<\/li>\n<li style=\"list-style: none;\">&check; <strong>Brand new courses released <em>regularly<\/em><\/strong>, ensuring you can keep up with state-of-the-art techniques<\/li>\n<li style=\"list-style: none;\">&check; <strong>Pre-configured Jupyter Notebooks in Google Colab<\/strong><\/li>\n<li style=\"list-style: none;\">&check; Run all code examples in your web browser \u2014 works on Windows, macOS, and Linux (no dev environment configuration required!)<\/li>\n<li style=\"list-style: none;\">&check; Access to <strong>centralized code repos for <em>all<\/em> 520+ tutorials<\/strong> on PyImageSearch<\/li>\n<li style=\"list-style: none;\">&check; <strong> Easy one-click downloads<\/strong> for code, datasets, pre-trained models, etc.<\/li>\n<li style=\"list-style: none;\">&check; <strong>Access<\/strong> on mobile, laptop, desktop, etc.<\/li>\n<\/ul>\n<p style=\"text-align: center;\">\n\t\t<a  class=\"button link\" href=\"https:\/\/pyimagesearch.com\/pyimagesearch-university\/?utm_source=blogPost&#038;utm_medium=bottomBanner&#038;utm_campaign=What%27s%20next%3F%20I%20recommend\" style=\"background-color: #6DC713; border-bottom: none;\">Click here to join PyImageSearch University<\/a>\n\t<\/p>\n<\/div>\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" id=\"h2Summary\"\/>\n<h2><a href=\"https:\/\/pyimagesearch.com\/2023\/09\/04\/getting-started-with-docker-for-machine-learning\/#TOCh2Summary\"><strong>Summary<\/strong><\/a><\/h2>\n<p>In this blog post, we demystify Docker, highlighting its role in streamlining Machine Learning (ML) workflows. We introduce Docker as a lightweight, efficient tool that packs, ships, and runs applications as portable, isolated containers, contrasting this with the bulkier design of traditional Virtual Machines. <\/p>\n<p>We guide you through setting up Docker on your system, explaining its significance in ML. Docker ensures consistent environments from development to deployment, eliminating compatibility issues and facilitating reproducible research. <\/p>\n<p>Our post underlines Docker&#8217;s use cases (e.g., enhancing collaboration, easing cloud deployments, and scaling ML applications), thus demonstrating its value in simplifying and enhancing ML projects.<\/p>\n<hr class=\"wp-block-separator has-alpha-channel-opacity\" id=\"h3Citation\"\/>\n<h3><a href=\"https:\/\/pyimagesearch.com\/2023\/09\/04\/getting-started-with-docker-for-machine-learning\/#TOCh3Citation\"><strong>Citation Information<\/strong><\/a><\/h3>\n<p><strong>Mukherjee, S. <\/strong>\u201cGetting Started with Docker for Machine Learning,\u201d <em>PyImageSearch<\/em>, P. Chugh, A. R. Gosthipaty, S. Huot, K. Kidriavsteva, and R. Raha, eds., 2023, <a href=\"https:\/\/pyimg.co\/k3xw6\"  rel=\"noreferrer noopener\">https:\/\/pyimg.co\/k3xw6<\/a> <\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"raw\" data-enlighter-theme=\"classic\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"false\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">@incollection{Mukherjee_2023_Docker4ML,\n  author = {Suvaditya Mukherjee},\n  title = {Getting Started with Docker for Machine Learning},\n  booktitle = {PyImageSearch},\n  editor = {Puneet Chugh and Aritra Roy Gosthipaty and Susan Huot and Kseniia Kidriavsteva and Ritwik Raha},\n  year = {2023},\n  url = {https:\/\/pyimg.co\/k3xw6},\n}<\/pre>\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n<div style=\"padding: 40px; width: 100%; background-color: #F4F6FA;\">\n<img decoding=\"async\" src=\"https:\/\/b2633864.smushcdn.com\/2633864\/wp-content\/uploads\/2023\/05\/maskcv.png?lossy=2&#038;strip=1&#038;webp=1\" alt=\"Featured Image\" style=\"width: 100%; height: auto; margin-bottom: 20px;\" srcset=\"https:\/\/b2633864.smushcdn.com\/2633864\/wp-content\/uploads\/2023\/05\/maskcv.png?size=126x70&#038;lossy=2&#038;strip=1&#038;webp=1 126w, https:\/\/b2633864.smushcdn.com\/2633864\/wp-content\/uploads\/2023\/05\/maskcv-300x166.png?lossy=2&#038;strip=1&#038;webp=1 300w, https:\/\/b2633864.smushcdn.com\/2633864\/wp-content\/uploads\/2023\/05\/maskcv.png?size=378x209&#038;lossy=2&#038;strip=1&#038;webp=1 378w, https:\/\/b2633864.smushcdn.com\/2633864\/wp-content\/uploads\/2023\/05\/maskcv.png?lossy=2&#038;strip=1&#038;webp=1 500w\" sizes=\"(max-width: 500px) 100vw, 500px\"><\/p>\n<h3>Unleash the potential of computer vision with Roboflow &#8211; Free!<\/h3>\n<ul style=\"margin-left: 0px;\">\n<li style=\"list-style: none;\">Step into the realm of the future by <a  href=\"https:\/\/roboflow.com\/?ref=pyimagesearch\">signing up or logging into your Roboflow account<\/a>. Unlock a wealth of innovative dataset libraries and revolutionize your computer vision operations.<\/li>\n<li style=\"list-style: none;\">Jumpstart your journey by choosing from our broad array of datasets, or benefit from PyimageSearch\u2019s comprehensive library, crafted to cater to a wide range of requirements.<\/li>\n<li style=\"list-style: none;\">Transfer your data to Roboflow in any of the 40+ compatible formats. Leverage cutting-edge model architectures for training, and deploy seamlessly across diverse platforms, including API, NVIDIA, browser, iOS, and beyond. Integrate our platform effortlessly with your applications or your favorite third-party tools.<\/li>\n<li style=\"list-style: none;\">Equip yourself with the ability to train a potent computer vision model in a mere afternoon. With a few images, you can import data from any source via API, annotate images using our superior cloud-hosted tool, kickstart model training with a single click, and deploy the model via a hosted API endpoint. Tailor your process by opting for a code-centric approach, leveraging our intuitive, cloud-based UI, or combining both to fit your unique needs.<\/li>\n<li style=\"list-style: none;\">Embark on your journey today with absolutely no credit card required. Step into the future with Roboflow.<\/li>\n<\/ul>\n<p style=\"text-align: center;\">\n        <a  class=\"button link\" href=\"https:\/\/roboflow.com\/?ref=pyimagesearch\" style=\"background-color: #6DC713; border-bottom: none;\">Join Roboflow Now<\/a>\n    <\/p>\n<\/div>\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n<div id=\"download-the-code\" class=\"post-cta-wrap\">\n<div class=\"gpd-post-cta\">\n<div class=\"gpd-post-cta-content\">\n<div class=\"gpd-post-cta-top\">\n<div class=\"gpd-post-cta-top-image\"><img decoding=\"async\" src=\"https:\/\/b2633864.smushcdn.com\/2633864\/wp-content\/uploads\/2020\/01\/cta-source-guide-1.png?lossy=2&#038;strip=1&#038;webp=1\" alt=\"\" srcset=\"https:\/\/b2633864.smushcdn.com\/2633864\/wp-content\/uploads\/2020\/01\/cta-source-guide-1.png?lossy=2&#038;strip=1&#038;webp=1 410w,https:\/\/b2633864.smushcdn.com\/2633864\/wp-content\/uploads\/2020\/01\/cta-source-guide-1.png?size=126x174&#038;lossy=2&#038;strip=1&#038;webp=1 126w,https:\/\/b2633864.smushcdn.com\/2633864\/wp-content\/uploads\/2020\/01\/cta-source-guide-1.png?size=252x348&#038;lossy=2&#038;strip=1&#038;webp=1 252w\" sizes=\"(max-width: 410px) 100vw, 410px\" \/><\/div>\n<div class=\"gpd-post-cta-top-title\">\n<h4>Join the PyImageSearch Newsletter and Grab My FREE 17-page Resource Guide PDF<\/h4>\n<\/div>\n<div class=\"gpd-post-cta-top-desc\">\n<p>Enter your email address below to <strong>join the PyImageSearch Newsletter<\/strong> and <strong>download my FREE 17-page Resource Guide PDF<\/strong> on Computer Vision, OpenCV, and Deep Learning.<\/p>\n<\/div><\/div>\n<div class=\"gpd-post-cta-bottom\">\n<form class=\"footer-cta\" action=\"https:\/\/www.getdrip.com\/forms\/657075648\/submissions\" method=\"post\"  data-drip-embedded-form=\"657075648\">\n\t\t\t\t\t<input name=\"fields[email]\" type=\"email\" value=\"\" placeholder=\"Your email address\" class=\"form-control\" \/><\/p>\n<p>\t\t\t\t\t<button type=\"submit\">Join the Newsletter!<\/button><\/p>\n<div style=\"display: none;\" aria-hidden=\"true\"><label for=\"website\">Website<\/label><br \/><input type=\"text\" id=\"website\" name=\"website\" tabindex=\"-1\" autocomplete=\"false\" value=\"\" \/><\/div>\n<\/p><\/form>\n<\/p><\/div>\n<\/p><\/div>\n<\/div>\n<\/div>\n<p>The post <a rel=\"nofollow\" href=\"https:\/\/pyimagesearch.com\/2023\/09\/04\/getting-started-with-docker-for-machine-learning\/\">Getting Started with Docker for Machine Learning<\/a> appeared first on <a rel=\"nofollow\" href=\"https:\/\/pyimagesearch.com\/\">PyImageSearch<\/a>.<\/p>\n\n<p class=\"syndicated-attribution\"><figure class= \\\"wp-block-image alignnone \\\"><img src= \\\"http:\/\/itteacheritfreelance.hk\/test\/wordpress\/wp-content\/uploads\/2016\/05\/logo2-2.png\\\" alt=\\\"IT\u96fb\u8166\u88dc\u7fd2 java\u88dc\u7fd2 \u70ba\u5927\u5bb6\u914d\u5c0d\u96fb\u8166\u88dc\u7fd2,IT freelance, \u79c1\u4eba\u8001\u5e2b, PHP\u88dc\u7fd2,CSS\u88dc\u7fd2,XML,Java\u88dc\u7fd2,MySQL\u88dc\u7fd2,graphic design\u88dc\u7fd2,\u4e2d\u5c0f\u5b78ICT\u88dc\u7fd2,\u4e00\u5c0d\u4e00\u79c1\u4eba\u88dc\u7fd2\u548cFreelance\u81ea\u7531\u5de5\u4f5c\u914d\u5c0d\u3002\\\"\/><figcaption>\u7acb\u523b\u8a3b\u518a\u53ca\u5831\u540d\u96fb\u8166\u88dc\u7fd2\u8ab2\u7a0b\u5427!<\/figcaption><\/figure>\r\n<\/br>Find A Teacher Form:\r\n<\/br>https:\/\/docs.google.com\/forms\/d\/1vREBnX5n262umf4wU5U2pyTwvk9O-JrAgblA-wH9GFQ\/viewform?edit_requested=true#responses\r\n<\/br><\/br>Email:\r\n<\/br>public1989two@gmail.com<br><br><br><br><br><br><br>\r\n<a href=www.itsec.hk style=color:#FFFFFF;>www.itsec.hk<\/a><br>\r\n<a href=\\\"www.itsec.vip\\\" style=color:#FFFFFF;>www.itsec.vip<\/a><br>\r\n<a href=\\\"www.itseceu.uk\\\" style=color:#FFFFFF;>www.itseceu.uk<\/a><br><\/p>","protected":false},"excerpt":{"rendered":"<div class=\"mh-excerpt\"><p>Table of Contents Getting Started with Docker for Machine Learning Overview: Why the Need? What Are Containers? How Do Containers Differ from Virtual Machines? Most Popular Container Images TensorFlow PyTorch Python NGINX Install Docker Install Docker Manually Install Docker Desktop\u2026<\/p>\n<p>The post <a rel=\"nofollow\" href=\"https:\/\/pyimagesearch.com\/2023\/09\/04\/getting-started-with-docker-for-machine-learning\/\">Getting Started with Docker for Machine Learning<\/a> appeared first on <a rel=\"nofollow\" href=\"https:\/\/pyimagesearch.com\/\">PyImageSearch<\/a>.<\/p>\n<\/div>","protected":false},"author":2022,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"slim_seo":{"title":"Getting Started with Docker for Machine Learning - ITTeacherITFreelance.hk","description":"Table of Contents Getting Started with Docker for Machine Learning Overview: Why the Need? What Are Containers? How Do Containers Differ from Virtual Machines?"},"footnotes":""},"categories":[10700],"tags":[],"_links":{"self":[{"href":"https:\/\/itteacheritfreelance.hk\/wordpress\/index.php\/wp-json\/wp\/v2\/posts\/329282"}],"collection":[{"href":"https:\/\/itteacheritfreelance.hk\/wordpress\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/itteacheritfreelance.hk\/wordpress\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/itteacheritfreelance.hk\/wordpress\/index.php\/wp-json\/wp\/v2\/users\/2022"}],"replies":[{"embeddable":true,"href":"https:\/\/itteacheritfreelance.hk\/wordpress\/index.php\/wp-json\/wp\/v2\/comments?post=329282"}],"version-history":[{"count":1,"href":"https:\/\/itteacheritfreelance.hk\/wordpress\/index.php\/wp-json\/wp\/v2\/posts\/329282\/revisions"}],"predecessor-version":[{"id":329283,"href":"https:\/\/itteacheritfreelance.hk\/wordpress\/index.php\/wp-json\/wp\/v2\/posts\/329282\/revisions\/329283"}],"wp:attachment":[{"href":"https:\/\/itteacheritfreelance.hk\/wordpress\/index.php\/wp-json\/wp\/v2\/media?parent=329282"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/itteacheritfreelance.hk\/wordpress\/index.php\/wp-json\/wp\/v2\/categories?post=329282"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/itteacheritfreelance.hk\/wordpress\/index.php\/wp-json\/wp\/v2\/tags?post=329282"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}