【Docker系列】2-Docker入门,容器化剖析

146 阅读7分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

01 Docker入门,容器化剖析

1.1 什么是Docker

1.1.1 官网首页

www.docker.com/

Docker 概述

Docker 是一个用于开发、传送和运行应用程序的开放平台。Docker 使您能够将应用程序与基础设施分开,以便您可以快速交付软件。使用 Docker,您可以像管理应用程序一样管理基础设施。通过利用 Docker 的快速交付、测试和部署代码的方法,您可以显着减少编写代码和在生产中运行代码之间的延迟。

1.1.2 Docs

docs.docker.com/get-started…

我们可以用Docker做什么

  • 构建并运行镜像作为容器
  • 使用 Docker Hub 共享镜像
  • 使用多个容器和一个数据库部署 Docker 应用程序
  • 使用 Docker Compose 运行应用程序

1.1.3 虚拟化技术演变过程

不妨从一个需求开始 :开发好了一个项目shopping,部署上线

  • 远古时代 image-20210604180850036 问题 :成本高、部署慢、浪费资源、硬件限制、不利于迁移扩展
  • 虚拟化时代 image-20210604180850036 优点 :相对利用好资源,相对容易扩展等。 缺点 :虚拟机太重了,一上来占用较多物理资源,移植性差,资源利用率低等。
  • 容器时代 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6rYAr4vR-1623852757261)(gitee.com/onlycreator…)

1.1.4 再次理解Docker

Docker is a platform for developers and sysadmins to develop, deploy, and run applications with containers. The use of Linux containers to deploy applications is called containerization. Containers are not new, but their use for easily deploying applications is.

发现还是比较容易理解的,但是这里有一句“Containers are not new”,也就是容器化技术很早就出现了,比如常见的容器化技术有OpenVZ,LXC,RKT等

1.1.5. Docker作用

Docker是一种容器技术,使用Docker可以:

  • 将软件环境安装并配置好,打包成一个镜像Image,然后将该镜像发布出去(Docker仓库)
  • 其他使用者可以在仓库中下载获取这个镜像
  • 通过Docker运行这个镜像,就可以获取同样的环境(容器)

Docker简化了环境部署和配置,实现“一次构建,处处运行”,避免了因运行环境不一致而导致的异常

可以将Docker简单的认为是一个虚拟机,可以运行各种软件环境的虚拟机,但与传统虚拟机技术有所不同

Docker容器技术与传统虚拟机技术的区别:

  • 传统虚拟机技术:模拟一个完整的操作系统,先虚拟出一套硬件,然后在其上安装操作系统,最后在系统上再运行应用程序 缺点:资源占用多,启动慢
  • Docker容器技术:不是模拟一个完整的操作系统,没有进行硬件虚拟,而是对进程进行隔离,封装成容器,容器内的应用程序是直接使用宿主机的内核,且容器之间是互相隔离的,互不影响 优点:更轻便、效率高、启动快、秒级

1.1.6 Docker的优势和应用场景

www.docker.com --->Solutions

(1)	有助于Microservices的落地和部署
(2)	充分利用物理机资源,同时能够整合服务器资源
(3)	提高开发效率,测试效率,部署效率,有利于DevOps的落地,CICD
(4)	云原生落地,应用更好地迁移
......

1.2 什么是镜像和容器?

1.2.1 什么是容器?

Why is docker?->What is a container

容器是一个标准的软件单元,它打包了代码及其所有依赖项,因此应用程序可以从一个计算环境快速可靠地运行到另一个计算环境。Docker 容器映像是一个轻量级、独立、可执行的软件包,其中包含运行应用程序所需的一切:代码、运行时、系统工具、系统库和设置。

1.2.2 什么是镜像?

Why is docker?->What is a container

容器镜像在运行时成为容器,在 Docker 容器的情况下,镜像在Docker Engine上运行时成为容器。可用于基于 Linux 和 Windows 的应用程序,容器化软件将始终运行相同,无论基础架构如何。容器将软件与其环境隔离开来,并确保它能够一致地工作

1.2.3 镜像和容器的联系

Container images become containers at runtime and in the case of Docker
containers- images become containers when they run on Docker Engine.

镜像在 Docker 引擎上运行时成为容器

1.2.4 官方参考

www.docker.com/resources/w…

1.3 比较容器和虚拟机

容器和虚拟机具有相似的资源隔离和分配优势,但功能不同,因为容器虚拟的是操作系统而不是硬件。容器更便携,更高效。

容器

容器是应用层的抽象,将代码和依赖项打包在一起。多个容器可以在同一台机器上运行,并与其他容器共享操作系统内核,每个容器作为用户空间中的独立进程运行。容器占用的空间比 VM 少(容器映像的大小通常为数十 MB),可以处理更多应用程序,并且需要更少的 VM 和操作系统。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PcuXhjl1-1623852757266)(gitee.com/onlycreator…)

虚拟机

虚拟机 (VM) 是将一台服务器变成多台服务器的物理硬件的抽象。管理程序允许多个 VM 在一台机器上运行。每个 VM 都包含操作系统、应用程序、必要的二进制文件和库的完整副本 - 占用数十 GB。VM 的启动速度也可能很慢。

container-vm-whatcontainer_2

1.4 Docker 引擎和架构

www.docker.com/products/co…

1.4.1 Docker Engine

Docker Engine 是一个客户端-服务器应用程序,具有以下主要组件:

  • 服务器是一种称为守护进程(dockerd 命令)的长时间运行程序。
  • 一个 REST API,它指定了程序可以用来与守护进程对话并指示它做什么的接口。
  • 命令行界面 (CLI) 客户端(docker 命令)。

image-20210610212913481

image-20210605115404906

1.4.2 Docker 架构

Docker 使用客户端-服务器架构。Docker客户端与 Docker守护进程对话,后者负责构建、运行和分发 Docker 容器的繁重工作。Docker 客户端和守护程序可以 在同一系统上运行,或者您可以将 Docker 客户端连接到远程 Docker 守护程序。Docker 客户端和守护进程使用 REST API、UNIX 套接字或网络接口进行通信。另一个 Docker 客户端是 Docker Compose,它允许您使用由一组容器组成的应用程序。

image-20210605114607258

1.5 获取Docker

docs.docker.com/get-docker/

image-20210605114804162

1.6 基本术语

术语:

  • Docker主机(Host)

    安装了Docker程序的主机,运行Docker守护进程

  • Docker镜像(Image)

    将软件环境打包好的模板,用来创建容器的,一个镜像可以创建多个容器

  • Docker容器(Container)

    运行镜像后生成的实例称为容器,每运行一次镜像就会产生一个容器,容器可以启动、停止或删除

    容器使用是沙箱机制,互相隔离,是独立是安全的

    可以把容器看作是一个简易版的Linux环境,包括用户权限、文件系统和运行的应用等

  • Docker仓库(Repository)

    用来保存镜像的,仓库中包含许多镜像,每个镜像都有不同的标签Tag

    官方仓库:hub.docker.com/

使用Docker的步骤:

1. 安装Docker
2. 从Docker仓库中下载软件对应的镜像
3. 运行这个镜像,此时会生成一个Docker容器
4. 对容器的启动/停止就是对软件的启动/停止