Docker--基础详解

发布于:2024-07-01 ⋅ 阅读:(15) ⋅ 点赞:(0)

目录

Docker介绍

Docker与传统虚拟机相比的优势

Docker基础插件

Docker镜像

容器和仓库


Docker介绍

Docker 是一个开源的应用容器引擎,基于 Go 语言开发,遵从Apache2.0开源协议,依赖Linux内核的Cgroup和Namespace等技术,对进程进行封装隔离,属于操作系统层面的虚拟化技术

Docker解决了运行环境和配置不兼容问题,方便做持续集成并有助于整体发布的容器虚拟化技术

目标:Build once,Run anywhere(一次封装,到处运行)

Docker与传统虚拟机相比的优势

Docker可以更高效的利用系统资源容器不需要进行硬件虚拟以及运行完整操作系统的虚拟等额外开销,对系统资源的利用率更高;

1.更快速的启动时间:容器应用直接运行于宿主机内核,无需启动完整的操作系统,可以做到秒级、甚至毫秒级启动时间;
2.一致的运行环境:镜像提供了完整的运行时环境,确保开发、测试、生产等运行环境一致性;
3.持续交付和部署:通过Dockerfile构建镜像,可以结合持续继承、持续交付、持续部署;
4.更轻松的迁移:Docker镜像确保运行环境一致性,使得服务迁移更加容易;
5.更轻松的维护和扩展:Docker使用分层镜像技术使得重复部分复用更为容易,维护更新、基于镜像继续扩展也变得简单;

Docker基础插件

镜像(Images):Docker 镜像就是一个只读的模板。镜像可以用来创建 Docker容器,一个镜像可以创建很多容器。有镜像才有容器,它也相当于是一个root文件系统。比如官方镜像 centos:7 就包含了完整的一套 centos:7 最小系统的 root 文件系统。docker镜像文件类似于Java的类模板,而docker容器实例类似于java中new出来的实例对象。
容器(Container):从面向对象角度Docker 利用容器是独立运行一个或一组应用,应用程序或服务运行在容器里面,容器就类似于一个虚拟化的运行环境,容器是用镜像创建的运行实例。就像是Java中的类和实例对象一样,镜像是静态的定义,容器是镜像运行时的实体容器为镜像提供了一个标准的和隔离的运行环境,它可以被启动、开始、停止、删除。每个容器都是相互隔离的、保证安全的平台。容器可以看做是一个简易版的 Linux 环境(包括root用户权限、进程空间、用户空间和网络空间等)和运行在其中的应用程序

仓库(Repository): 是集中存放镜像文件的场所。 类似于Maven仓库,存放各种jar包的地方;github仓库,存放各种项目代码的地方;Docker公司提供的官方registry被称为Docker Hub,存放各种镜像模板的地方。 仓库分为公开仓库(Public)和私有仓库(Private)两种形式

Docker镜像

Docker镜像在服务器存储和运行时,作为Linux的一个文件系统

Docker镜像默认使用Overlay2文件系统(还支持AUFS、Btrfs、Device mapper、OverlayFS、ZFS等联合文件系统),具有以下特点

分层(Layer):一个镜像可以多个中间层组成,多个镜像可以共享同一中间层,也可以通过在镜像添加多一层来生成一个新的镜像(一个平台多个组件如果使用相同的基础镜像,可以大大减少存储空间占用量并提高镜像拉取效率)

只读(read-only):镜像在构建完成之后,便不可以再修改

写时复制:docker 镜像使用了写时复制(copy-on-write)的策略,多个同镜像的容器之间共享镜像只读层,容器内文件发生变化时,把变化的文件内容复制到可读写层,大大减少了多容器下对磁盘空间的占用

容器和仓库

容器一种特殊的隔离的进程方法

1.Docker封装LXC技术实现容器管理(从 0.9 版本开始使用 libcontainer 替代了LXC)
2.当Docker通过镜像创建一个容器时,就是将镜像定义好的用户空间作为独立隔离的进程运行在       宿主机的Linux内核之上。
3.基于Namespace和Cgroups技术实现容器进程间隔离
   a. Namespace:实现资源隔离,包括进程、网络、挂载点等
   b. Cgroups :用来限制容器使用的资源配额,包括CPU、内存、磁盘等、、

仓库是集中存放镜像文件的场所

  1. 支持镜像拉取、存储、推送等服务
  2. 公共仓库:一般是指Docker Hub
  3. 私有仓库 :Docker官方提供了registry这个镜像,可以用于搭建私有仓库服务,产品比如Harbor