Docker is an open source container technology being developed under the initiative of Docker, Inc. It has the concept of container “image”. The image is a package of executable software that contains all the code, runtime, tools, libraries and configuration information needed to run the application.
Originally it was used in the software development and testing stages for the reasons such as high-speed distribution/execution of software, customization of an easy image, easy implementation and operation, provision of rich prebuilt image, from cloud to on-premises system; it is spreading rapidly in various scenes.
However, the reason why this Docker gets noticeable is not only that the consumption of hardware resources and performance degradation are small compared with hypervisor type virtualization software.
Docker is a very lightweight container type application execution environment and uses virtualization technology called a container. The difference from the conventional virtualization technology is that it shares the kernel of the host with the container and is executed as an independent process on the host operating system. This has led to weight savings and higher speeds. Moreover, it does not depend on a specific infrastructure, it can operate on various OS such as Linux, Mac, Windows, and it is excellent in portability.
Benefits of Docker
There is a word DevOps (a development method that developers and operation managers integrated), but here we consider the advantages for Dev and Ops respectively.
For developers (Dev), one can concentrate on application development by automating the development environment development using Docker. There is no need to install troublesome databases, there is no need to install multiple versions of programming languages and tools and use them while switching them. Since all the necessary software and dependencies are in the container, it is possible to avoid problems such as “It runs on my machine, but it does not work in other environments”.
Next, the Operator (Ops) simplifies the application delivery by Docker. We will be able to quickly deploy bug fixes and new features. It makes it easier to automate the build, test, and deployment of applications from development environment to production environment.
Some Typical Usage Patterns of Docker
|DevOps||Automate the pipeline of deployment through CI / CD(continuous integration/delivery), get feedback quickly, improve development productivity|
|Micro Service||Simplify the development and deployment of applications designed with microservice architecture|
|Modernization of Conventional Applications||By converting existing applications into containers, one can reduce costs and make it easier to migrate to the cloud without modifying the code|
|Infrastructure Optimization||By converting applications into containers, one can densify and consolidate servers and reduce costs|
|Hybrid Cloud||Realize complete portability without modifying the code from on-premise environment to a public cloud|
What is a Docker image?
In Docker, an application, its execution environment, deployment/operation method (script) and the like are collectively made into one package, and it is saved/distributed as ‘Docker image’. One can get the image (base image) that is distributed in the official ‘repository’, or you can create your own.
Docker image launched on Docker Engine becomes Docker ‘s container. After installing the necessary applications in the container, customizing each part, one can save it on disk and use it as a new Docker image. Image files are highly compatible, which basically works on any Docker host.
Although Docker provides a flexible application development environment, IT department has an image that it can replace virtualization software because it can easily build, consolidate and use OS environment, but in reality it is not only that. It has the merit of packaging multiple OS and application environments and making it possible to immediately use the environment created by developers around the world and members of the IT department through the Internet.
Docker not only provides a development and execution environment for high-performance applications but also shares those OSs and applications all over the world, and provides a service that automates the processes necessary for the IT system to achieve a certain purpose
Common Components in Docker for Windows and Docker for Mac
|Docker Engine||The core container engine running on the server side|
|Docker CLI||Client-side command line interface|
|Docker Compose||Tools for defining and executing multiple containers|
|Docker Machine||A tool for installing and managing Docker on a remote virtual machine on the local or public cloud|
|Kitematic||GUI tool for managing Docker on Windows, macOS|