Ignition & Docker: A Perfect Match!

Getting Started With Ignition And Docker

Estimated read time: 1:20

    Learn to use AI like a Pro

    Get the latest AI workflows to boost your productivity and business performance, delivered weekly by expert consultants. Enjoy step-by-step guides, weekly Q&A sessions, and full access to our AI workflow archive.

    Canva Logo
    Claude AI Logo
    Google Gemini Logo
    HeyGen Logo
    Hugging Face Logo
    Microsoft Logo
    OpenAI Logo
    Zapier Logo
    Canva Logo
    Claude AI Logo
    Google Gemini Logo
    HeyGen Logo
    Hugging Face Logo
    Microsoft Logo
    OpenAI Logo
    Zapier Logo

    Summary

    The video by Inductive Automation offers an insightful introduction to using Docker with Ignition, a platform from the OT (Operational Technology) world. The idea of Dockerization might initially seem daunting to some, but the guide promises to demystify the process and offer useful tools to ease into it. The narrator emphasizes leveraging resources like the Inductive University videos and the Docker image page in Inductive’s manual, which are invaluable for beginners. Docker Desktop, showcasing three integrated Docker products, is highlighted for its simplicity and utility for newcomers. Additionally, Visual Studio Code is recommended for managing Docker Compose files, streamlining the process by allowing easy configuration and integration of multiple applications. Overall, the video aims to make deploying Ignition within Docker straightforward and efficient, even discussing production licensing requirements for practical applications.

      Highlights

      • Docker simplifies the deployment of Ignition times ten! 🚀
      • Use Docker Desktop for a streamlined container management experience 🖥️.
      • Docker Compose and VS Code = a match made in heaven for managing YAML files 📄✨.
      • Get started easily with Inductive’s resources for Ignition and Docker 🛠️.
      • Consider production licensing requirements when using Docker for Ignition 🔑.

      Key Takeaways

      • Dockerizing Ignition makes deployment easier and more efficient 🚀.
      • Using Docker Desktop can simplify managing containers with its intuitive UI 🖥️.
      • Docker Compose helps streamline and automate the setup process with YAML files 📄.
      • Visual Studio Code enhances Docker Compose management with its editor features 📝.
      • Eight-character licensing keys are recommended for Dockerized Ignition in production 🔑.

      Overview

      Unveil the power of Dockerization with Ignition, making complex deployments a breeze! Initially, the unfamiliar waters of Docker might seem intimidating to those from an OT background. However, with the help of this guide, you’ll navigate these waters with ease. Inductive Automation provides valuable educational resources that make starting your Docker journey enlightening and manageable.

        Dockers, containers, and Ignition oh my! Docker Desktop is marveled at for integrating three superb Docker tools that embody feasibility and efficiency. The standout feature? Its friendly UI that accommodates Docker beginners! With just a few commands, you can run applications seamlessly, yeah it’s that slick. Learn how Docker Compose and Visual Studio Code on the other hand, team up for a stellar orchestration experience, automating setups minus the headaches.

          Curious about deploying Ignition in production via Docker? You've got to hear about the licensing talk! While Docker's prowess is obvious in development environments, production settings require a savvy approach to licensing. Inductive Automation makes it easy with eight-character lease licenses, respectful of Docker’s flexibility by being non-hardware specific, playing well with containerized environments.

            Chapters

            • 00:00 - 00:30: Introduction to Docker with Ignition The chapter introduces the concept of using Docker with Ignition, aiming to familiarize readers who may come from an Operational Technology (OT) background. It acknowledges that Docker may seem daunting initially but offers to provide tips and tools to facilitate the learning process.
            • 00:30 - 01:00: Resources for Getting Started with Docker The chapter discusses the initial steps and resources available for getting started with Docker, specifically for those using Dockerized Ignition. It highlights the importance of using elective inductive university videos and the Docker image page of their manual as valuable resources for beginners. These resources are recommended for anyone who is just starting with Dockerized Ignition, offering extensive reference material to ease the learning process.
            • 01:00 - 01:30: Understanding Docker and Containerization Chapter Title: Understanding Docker and Containerization This chapter introduces readers to Docker, which is described as a containerization engine. It explains the concept of containerization as the virtualization of all components necessary for an application to function within a self-contained unit called a container. Unlike traditional virtual machines, these containers are not dependent on the operating system. The chapter emphasizes that these containers operate on a containerization engine such as Docker.
            • 01:30 - 02:00: Installing and Using Docker Desktop The chapter discusses the ease of deployment and management of Docker software. It explains that Docker can be installed on almost any operating system. The specific version highlighted is Docker Desktop, which is an application designed for Windows. The speaker is using it on their work laptop, which operates on Windows.
            • 02:00 - 02:30: Key Features of Docker Desktop The chapter discusses the key features of Docker Desktop, emphasizing three main Docker products included in it: the Docker engine, Docker Compose, and an unspecified third feature. The Docker engine is highlighted as the core component that runs the actual containers, representing the essential workings of Docker. Docker Compose is described as a tool used to create a configuration file for containers, allowing for configuration reuse. The chapter promises a demonstration of Docker Compose later on in the narrative.
            • 02:30 - 03:00: Running Ignition in a Docker Container This chapter discusses the process of using Docker Desktop to run Ignition in a Docker container. It begins with an introduction to the Docker Desktop dashboard, emphasizing its user-friendly interface that provides detailed information about containers. This tool is particularly useful for beginners. The main task covered in this chapter is spinning up a Docker container running Ignition, demonstrated by opening the terminal within Docker Desktop.
            • 03:00 - 03:30: Using Docker Run Command The chapter 'Using Docker Run Command' focuses on demonstrating how to execute a Docker run command using an integrated terminal available in a UI. It explains the use of the 'docker run' command and highlights the significance of the '-d' flag, which instructs Docker to run the container in detached mode, thereby keeping all the detailed operations hidden from the user.
            • 03:30 - 04:00: Forwarding Ports with Docker The chapter discusses how to forward ports using Docker, specifically utilizing the '-p' flag for port forwarding. It explains that this process allows the port that the application runs on within the Docker container (e.g., port 8088) to be accessible on the host machine. A key point mentioned is that only one application can use a specific host port at any one time, emphasizing the importance of managing host port usage to avoid conflicts.
            • 04:00 - 04:30: Unique IDs and Naming Containers The chapter titled 'Unique IDs and Naming Containers' discusses the challenge of managing multiple instances of Ignition, particularly in relation to forwarding them to a specific port on the host side. To address this issue, the chapter suggests incrementing the port number. It also explains the process of obtaining the necessary Docker image from Docker Hub, specifically the Inductive Automation Ignition image, to build the specified configuration.
            • 04:30 - 05:00: Managing Containers with Docker Desktop UI The chapter titled 'Managing Containers with Docker Desktop UI' covers the process of handling applications within containers using Docker Desktop. It explains using flags such as the 'latest' flag to ensure the container runs the most recent version of an image, and the '-n' flag for naming the container, in this case, 'gateway webinar'. Upon running these commands, a unique ID string is generated, signifying the specific container instance.
            • 05:00 - 05:30: Introduction to Docker Compose The chapter introduces Docker Compose, highlighting the container ID and the appearance of a new container in the user interface. It notes that Docker automatically assigns random names to containers if not specified, as demonstrated with the name 'serene Matsumoto'. Additionally, the chapter covers details about the image used to run the application and the ports that were forwarded.
            • 05:30 - 06:00: Using Visual Studio Code for Docker Compose This chapter discusses using Visual Studio Code for Docker Compose. It explains how to view running containers and configuration settings within a web browser by clicking a link. The chapter provides details on monitoring container information and highlights actions available for controlling containers, such as stopping them. As demonstrated, stopping a container changes its status to exited mode, indicating it is no longer running.
            • 06:00 - 06:30: Benefits of Docker Compose YAML Files The chapter discusses the practicality of using Docker Compose YAML files in managing Docker containers. It highlights the ease of deleting and managing containers using Docker Desktop, a user interface tool. The narrator showcases Docker Desktop's features, such as removing containers and accessing image information, and then transitions into the topic of Docker Compose, which likely outlines further benefits and functionalities.
            • 06:30 - 07:00: Using Volumes for Persistent Configuration In this chapter titled 'Using Volumes for Persistent Configuration,' the focus is on utilizing Visual Studio Code for managing Docker Compose files. The speaker introduces Visual Studio Code as an editor for various files and demonstrates its use in handling compose files. The chapter emphasizes the importance of YAML files in Docker Compose and starts with an example file named 'docker-compose.yml.'
            • 07:00 - 07:30: Running Multiple Applications with Docker Compose The chapter titled 'Running Multiple Applications with Docker Compose' explains the use of YAML syntax in Docker Compose files. Instead of manually typing out configuration in command line, one can use key-value pairs in a YAML file to create a container configuration, which makes the process more efficient. This allows for reusability and easier incorporation of additional components, enhancing the overall setup process.
            • 07:30 - 08:00: File Naming and Directory Structure for Docker Compose Many tasks that usually require manual input can be automated using environment flags. An additional element being implemented is the use of volumes. The importance of volumes lies in their ability to persist configuration and resources developed within Ignition. By directly mapping the Docker volume to the Ignition data directory, the configuration remains intact even if the container encounters issues.
            • 08:00 - 08:30: Integrating VS Code with Docker The chapter titled 'Integrating VS Code with Docker' discusses how integrating Docker with Visual Studio Code (VS Code) allows users to manage their development environment more effectively. The transcript highlights that when a container is deleted, it can be respun and remapped to a volume to retain configurations. This prevents loss of any setup on the gateway. Additionally, it mentions the capability to run multiple applications within a composed container file, such as spinning up a container for a Postgres database, illustrating the flexibility of using different databases based on user preference.
            • 08:30 - 09:00: Automating Setup with Environment Flags The chapter discusses the use of environment flags in automating setup processes. It highlights compatibility with various database systems like Microsoft SQL Server and MariaDB through the use of image files. A significant advantage of using composed files is emphasized, as they allow the integration of multiple applications into a single coherent stack. Additionally, the chapter touches upon the importance of the naming convention for the Docker Compose file, specifically the 'docker-compose.yaml' file, which Docker Compose uses to identify and run configurations.
            • 09:00 - 09:30: Deploying Docker in Production The chapter 'Deploying Docker in Production' discusses the organization and execution of Docker Compose commands within specific directories. Each directory contains its own Docker Compose file, enabling distinct configurations and commands to be executed in isolation. The chapter emphasizes the utility of Visual Studio Code (VS Code) by highlighting features like the file explorer, which allows easy access to terminal commands directly from the interface, enhancing workflow efficiency.
            • 09:30 - 10:00: Licensing Dockerized Ignition Instances The chapter discusses how to license Dockerized Ignition instances and highlights the convenience of using Versus Code for managing compose files due to its variety of extensions. It describes the process of running a docker compose command to start services, specifically mentioning the setup of Ignition and Postgres services. The speaker appreciates the integrated interface provided by the terminal and file manager within the same window while working in the webinar directory.

            Getting Started With Ignition And Docker Transcription

            • 00:00 - 00:30 I do wanna take some time to talk a little bit about Docker with Ignition with you. And so we wanted to talk about this a little bit and introduce you to Docker with Ignition. This can seem a little bit daunting at first. Right? Because it may be a foreign concept for a lot of you, especially coming those of you coming from an OT world like myself. But I'm gonna introduce it to you a little bit here and hopefully provide some tips and tools that can help you get started easily, as well as maybe, you know,
            • 00:30 - 01:00 show you the benefits of why we like using it. So one thing I all should also note is that our elective inductive university videos on Docker and the Docker image page of our manual are great references for anybody getting started with Ignition in Docker and should be used by anyone that's starting out and trying to do that. I used them extensively when I started using Dockerized Ignition and they are great references. I believe we're gonna have those linked in the chat as
            • 01:00 - 01:30 well as in the slides. So first of all, though, what is it? Right? Docker is a containerization engine. Well, what is containerization? It's basically virtualizing everything around an application and loading everything that's needed for an application to run within a unit called a container. These containers then basically run on a containerization engine like Docker. These containers are also not operating system dependent.
            • 01:30 - 02:00 They're quickly deployed, and they're easily managed. So, the Docker software itself, we can talk about a quick second here. Docker can be installed on any mostly just about any operating system. Right? But the specific version of Docker that I'm using is Docker Desktop, which is a win an application for Windows, which is what I'm using for my host machine, my work laptop. Right?
            • 02:00 - 02:30 Another nice reason that I like to use it and that we're gonna kinda show it off here today is because Docker Desktop includes three Docker products that are really nice, that being the underlying Docker engine. So this is the core workings of Docker. This is what runs the actual containers. Right? The second being Docker Compose, which is can be used to create a file that holds all of our containers configuration to be reused. We're gonna see that a little bit later. It's really nice.
            • 02:30 - 03:00 And then the third is the Docker desktop dashboard that you see in front of you. That's what you should be able to see on my screen now. This provides a nice little user interface with details on our containers and even more, and that's why I think it's really good for people that are just starting out. So what we're gonna do first thing we're gonna do is we're just gonna spin up a container that is running Ignition. I'm gonna open the terminal up here within Docker Desktop
            • 03:00 - 03:30 and run from there. Now you could run any PowerShell, you know, or terminal that you wanted to run this in, but because we have this nice UI with an integrated terminal, let's use it. I just pasted this line in to my command line here, and you'll see that it's a Docker run command. So this is is saying run the container with these parameters I'm giving you. I'm giving it this dash d flag, which sells it to run-in detached mode, which just means hide all the details.
            • 03:30 - 04:00 I don't need to know all the intricacies of it starting up and running. The dash p flag, which is port forwarding. Now what that's gonna say is take the port that my application is running on in the container. We should all be familiar with this eight zero eight eight port that Ignition runs on, and it's gonna forward that to my host machine. That's gonna allow me to access it through that host's port. Now one thing of note is that only one application can run on a certain host port at a time.
            • 04:00 - 04:30 Meaning, if you have multiple instances of Ignition running, you're not going to be able to forward them all to eight zero eight eight on the left side of this operation here, which is your host side. What I like to do there is just count up, but you need some sort of free port is the bottom line there. The next line here is the actual image that we're gonna use. So this is telling it to go out if we don't have this image already to go to Docker Hub and grab the inductive automation ignition image, and that's what it's going to use to build that specific
            • 04:30 - 05:00 application in our container. And then I'm giving it this latest flag. So that's just saying, hey, make it be the latest version of Ignition, whatever we have the latest version of our image created for. Usually, our latest release minor version. And then we have the dash n flag, which is just naming the gateway webinar at the end here. So if we run that, you'll see it gave me an output in the terminal that is a unique string. That is the ID that is unique for that container.
            • 05:00 - 05:30 You'll also note that the beginning part of that unique ID matches the container ID that, was popped up here in this new container that showed up in my UI. You'll also see it gave me a random name, which Docker does if you don't explicitly tell it what to name the container. We usually there's something fun. We got serene Matsumoto. It also shows you what kind of image you were using to run it. So basically what the application is and it even shows you what ports you forwarded.
            • 05:30 - 06:00 If you click on this little link as well, it'll open up that port in your web browser right to, you know, what you set up, and you'll notice that this probably looks familiar. Right? This is basically the screen you go to to start your configuration of your new gateway that you've just installed. There's a lot of nice information to see about the container running. There's even some little actions we can use to control the containers over here on the right. We can stop the container, which you'll see it's now in exited mode and it's not running anymore.
            • 06:00 - 06:30 We can even remove it. Now this completely deletes the container. It no longer exists. Everything about it is gone. We could have done both of those operations within the terminal as well, but I just wanted to showcase some of the nice features that you have when using a UI like Docker Desktop. There's also a bunch of other information on images and stuff on the left here, but, I do wanna jump into my next little segment here, which is Docker Compose.
            • 06:30 - 07:00 Now for Docker Compose, I'm gonna jump into a different application called Visual Studio Code. Visual Studio Code is basically just a an editor for, you know, your different files, But you'll see a couple of the reasons why I like using it specifically for my compose files here as we go on. First thing I wanna talk about, though, is the compose file itself. The compose file is a YAML file. As you can tell here, my webinar one is docker dash compose dot YAML.
            • 07:00 - 07:30 Have it open the middle here. And, basically, what it does is it uses that YAML syntax with these, like, key value pairs to create your configuration for your container as opposed to typing it all out in a command line. You can just basically call this file. Right? So you can reuse this file. You can have a basic configuration, and that's why it's it's really nice. You have this set configuration. It makes it easier to add a lot of extra things too,
            • 07:30 - 08:00 like these environment flags where I'm automating a lot of the startup stuff that you would normally have to click through and do. One other extra thing I'm doing here that we didn't see before as well is these volumes. Now this is also really important because what this does is it allows us to persist our configuration and resources that we develop within Ignition because I'm mapping that Docker volume directly to the Ignition data directory. So that means if anything happens to this container,
            • 08:00 - 08:30 you know, it gets removed, completely deleted, it's gone. We can still re spin it up. It'll remap to this volume and go back to that configuration, and we have not lost everything that we configured on our gateway. So a lot of nice stuff there. You can also see that I've got other applications running in my composed container or in my composed file. Right? I've got a Postgres image that I'm spinning up a container for. This could be any other database that you wanna use,
            • 08:30 - 09:00 you know, if it's Microsoft SQL Server or MariaDB, anything that you can get an image for, basically. Another nice thing about those composed files is you can basically create a stack of all of the different applications you want to run integrated with each other in one file. We'll talk about the composed file's name itself here quickly too. Right? This docker dash compose dot YAML file name is important because the docker compose actually knows to run that specific file when
            • 09:00 - 09:30 you run it within a specific directory. You'll see if I open up these other folders they all have their own unique docker compose file and that's because when I run any docker compose commands within those directories they know exactly which file to run to find based on that name. So the first thing we'll kind of see here about, like I was saying I really like v s code for, is I can have my file explorer here, right click right on it, open in a terminal,
            • 09:30 - 10:00 and that terminal opens up right in this nice window where I can see my files, my terminal, and my compose file opened all in one. You'll see that I'm in that webinar directory. And if I do a docker compose up, run it in attach mode again. Like I mentioned, it knows exactly which file to use because of that specific name, and it'll start up these two services that we created with Ignition and Postgres. Another reason I really like Versus Code for my composed files is because you can get a ton of extensions for it.
            • 10:00 - 10:30 You'll see I have a whole lot going on here, but we're just gonna look at the Docker one today, which gives me the little Docker whale on the left. We go to that guy. You can see that I have information on all my containers, a bunch of ones that we're not using currently or turned off, but you can see the ones that I have started up for my little webinar Docker composed file here. You'll also see we have the same ability to do, like, a start and a stop and remove from the extension here as we
            • 10:30 - 11:00 could do in that Docker desktop application. We also have similar type of information on all of our images and volumes and networks and stuff here. So I really like that Docker engine for that. And, you know, if we go to a local host eight zero eight eight on our web browser, we go right to this gateway and you'll see that it just navigated me directly to it. I didn't even need to go through and set up the, you know, username and password and all that stuff you would normally
            • 11:00 - 11:30 do because I automated that in all of those environmental flags in my compose file. So one last thing I'm gonna leave you with here on the Docker front is that as great as it is for your development and testing, Docker is also a great and legitimate deployment method for use in production that we have plenty of customers doing. However, if you are going to license a Docker a dockerized Ignition instance, you should be using our eight character keys.
            • 11:30 - 12:00 Now these are different from our normal six character keys because this is what we call a least licensing method. Meaning, you know, you still just buy these licenses once, but these licenses have to reach out to our licensing server on a certain time basis. Right? The main reason that this is recommended for these is because this licensing model is not tied to the specific hardware of the machine. And because of that, they're better for containerized ignition
            • 12:00 - 12:30 environments as containerizing these services also decouples them from that underlying host machine's hardware in a similar fashion.