Research Docker
License and Copyright Notice
By submitting this issue or commenting on this issue, or contributing any content to this issue, you certify under the Developer Certificate of Origin that the content you post may be licensed under GPLv3 (for code) or CC-BY-SA 4.0 International (for non-code content).
What is the goal or the problem, and why is it important?
ViewOrder's BackEnd will require research into Docker as a tool to help set-up the framework. The issue here is that currently there is no foundation for the BackEnd due to ViewOrder being a newly created project. Therefore, there is a need to be able to contain the BackEnd environments for the goal of easing the creation, deployment and the delivery of ViewOrder in regards to the overall picture of BNM.
- Docker will be used to containerize both the FrontEnd and BackEnd environments
How are you going to achieve the goal or solve the problem?
Research will need to be gathered, compiled and summarized on the BackEnd of PlaceOrder due to ViewOrder having to have some interaction with the code found in PlaceOrder's BackEnd in addition to online resources such as YouTube videos, tutorial websites, articles and free online courses. These resources will be helpful in providing reliable information on how to create and format the BackEnd for ViewOrder.
What will be produced as a result of this effort and where will it live on GitLab?
- A list of helpful URLs regarding the creation of a backend
Give a justification of weight or due date.
This issue is given a weight of 4, which is equivalent to a 1-person week. It will take some time to gather, compile and summarize the research, along with instructing other team members on the use of Docker.
Who will do it, and what will they do?
@DT127 will be assigned to document the research and begin tentative set-up for the backend framework.
What was the outcome?
Background:
Here are two links on the basics of understanding what a “backend” is:
- A Beginner’s Guide to Back-End Development
- URL: https://www.upwork.com/resources/beginners-guide-back-end-development
- This article gives a simple definition to backend development, highlights the difference between what constitutes the frontend and backend, and outlines the basics of tools/technology that are used in developing a backend. ^
- Server-Side Scripting: Back-End Web Development Technology
- URL: https://www.upwork.com/resources/server-side-scripting-back-end-web-development-technology
- A short and comprehensive article that covers a high-level overview of a website’s backend and offer suggestions on server-side scripts, code and databases, popular languages and their server-side frameworks.
Helpful resources on getting to know Docker:
- What is Docker?
- Docker is an open platform designed for the purpose of developing, shipping and running applications.
- Docker allows for the separation of applications from infrastructure, which also provides the ability to package and run an application in a loosely isolated environment called a container.
- The benefit of this isolation and security is that you can run multiple containers simultaneously on a given host, ensuring that if there is a change in one component’s code then the change does not invoke a ripple affect across the other components as each is housed within a different container.
- What is a (Docker) Container?
- URL: https://www.docker.com/resources/what-container
- This article covers the general definition of a container, the definition and features of a Docker container, and provides a comparison between containers and virtual machines (includes visuals!).
- Container – a standard unit of software that packages up code and all of its dependences (including runtime, system tools, system libraries and settings) so as the application is able to run quickly and reliably from one computing environment to another.
- Containers are created from Docker images and are considered a writable layer of the image.
- Multiple containers can run on the same machine and share the OS kernel with other containers, each running as isolated processes.
- Containers can be started, halted, committed and terminated.
- However, if you terminate a container without committing it then all the changes within that container will be lost.
- It is not recommended to make changes to a running container.
- Any changes made on a running container should only be for testing purposes.
- What is a Docker Daemon?
- URL: https://devopscube.com/what-is-docker/
- A Docker Daemon (dockerd) can be considered a server that is responsible for all the actions that are related to containers.
- The daemon receives commands from the Docker client through a Command-Line Interface (CLI) or REST API.
- Docker client can be on the same host as the daemon or it can be present on any other host available.
- What are Docker Images?
- URL: https://devopscube.com/what-is-docker/
- Images are the basic building blocks of Docker; an image is needed in order to run a Docker container.
- Images can be pre-built with application dependencies for the purpose of creating containers.
- Docker has a Dockerfile that is used for building an image.
- A Dockerfile is typically a text file containing one command per line.
- What is a Docker registry?
- URL: https://devopscube.com/what-is-docker/
- A Docker registry is a central repository for Docker images.
- Docker images can be shared through the registry.
- A registry can be either public or private.
- Public repository entails that all your images can be accessed by other Docker Hub users; however you can simply create a private registry in Docker Hub (a register service hosted by Docker Inc.) to avoid having your images be public.
- What is a Docker Engine?
- URL: https://devopscube.com/what-is-docker/
- A Docker Engine is comprised of the Docker Daemon, an API interface, and a Docker Command-Line Interface (CLI).
- Docker Engines are responsible for building the Docker images.
- Install Docker Desktop on Windows
- URL: https://docs.docker.com/docker-for-windows/install/
- This page provides information on system requirements needed for Docker, what is included in the installer, an installation guide, how to uninstall Docker Desktop, automatic update information, and how to save and restore data.
- To be directed to the page to download Docker Desktop, click the “Download from Docker Hub” button on that page or click the URL link in the next bullet point below.
- Please note that the system requirements are different between Docker Desktop on Windows Home and Docker Desktop on Windows.
- Docker Desktop on Windows Home can be installed on Windows 10 Home machines.
- Docker Desktop on Windows can be installed on Windows 10 64-bit Pro, Enterprise, or Education (of Build 17134 or later).
- Direct link to downloading Docker Desktop for Windows
- Docker Desktop for Windows – User Manual
- URL: https://docs.docker.com/docker-for-windows/
- This user manual provides information on how to configure and manage Docker Desktop settings, along with some information on two-factor authentication and adding certificates.
- Please note that you can specify which daemon (Linux or Windows) the Docker CLI communicates with. By default Linux containers are used but this can be switched to using Windows containers from the Docker Desktop menu.
- Docker Tutorial for Beginners – A full DevOps Course on How to Run Applications in Containers
- URL: https://www.youtube.com/watch?v=fqMOX6JJhGo
- This is an approximately 2-hour course that covers an overview of Docker, the differences between containers, virtual machines and images, how to get started and install Docker, running Docker, Docker commands, labs, mapping and so much more.
- Docker Tutorial for Beginners [FULL COURSE in 3 Hours]
- URL: https://www.youtube.com/watch?v=3c-iBn73dDE
- The title is taken directly from the YouTube video and is a little misleading; this course is approximately 2-hours and 46 minutes and covers a variety of topics such as the basics of Docker, Docker installation, main Docker commands, how to debug a container, developing containers, deploying a containerized app, and more.
- This course also includes a demo project to help beginners gain a hands-on experience with Docker.
- List of Docker commands
- URL: https://phoenixnap.com/kb/list-of-docker-commands-cheat-sheet
- This tutorial offers a list of common/essential commands related to using Docker.
- A free cheat sheet is also available for download at the bottom of the tutorial.
- Docker Compose resources
- Docker Compose – a tool for defining and running multi-container Docker applications.
- Docker Compose Overview:
- URL: https://docs.docker.com/compose/
- Taken from the Docker docs, this page provides an overview of Docker Compose.
- Installation:
- URL: https://docs.docker.com/compose/install/
- Taken from the Docker docs, this page provides some aid in installing, upgrading and uninstalling Docker Compose on Mac operating systems, Windows desktop systems, Windows Server, Linux systems and other alternative installation options.
- Getting Started with Docker Compose:
- URL: https://docs.docker.com/compose/gettingstarted/
- This page serves as a step-by-step guide to building a simple Python web application that uses the Flask framework and runs on Docker Compose all with Docker Compose commands. You do not need to install Python or Redis if you would like to follow along the guide.
- Please note that Docker Compose allows you to host a web server on your machine, which can be accessed by typing in “http://localhost: (port number)”
- Docker can be integrated into various infrastructure tools such as Google Cloud Platform (GCP), Amazon Web Services (AWS), Microsoft Azure, Oracle Container Cloud Service and more.
- Docker can also be a tool to apply Continuous Integration (CI) and Continuous Deployment (CD) practices to a project, therefore improving the speed of the deployment process and minimizing cost of time.