容器技术——Docker部署以及基本命令

背景

就Linux而言,Linux操作系统会有一个主进程派生出其他进程来控制不同服务,这些进程服务可能会互相影响。
为了使他们能够跑在不同的运行环境中相互不影响,同时不会增加服务器成本,延伸出将三个服务封装起来,也就是后来的KVM虚拟化技术,实现了一个操作系统模拟多个操作系统或者多个不同的运行时环境。
随着技术发展,虚拟化技术开销越来越大,例如:只要运行一个py脚本,想要使用虚拟化技术实现,还需要安装一个操作系统,并不方便也不合理。由此基础上延伸出了容器技术。
容器技术就是将虚拟化层的抽象层(用户层)剥离,使用docker引擎来代替(来宾操作系统去除),只要通过引擎就可以直接连接到宿主机操作系统中,极大的减小了开销。

容器名称空间(name space)

在操作系统中,应用与应用隔离是通过name space实现的,也就是名称空间,只要实现以下的6个空间隔离,才能认为两个应用实现了隔离。
nemespace资源隔离——用容器化技术封装

名称空间 描述 作用(简单介绍)
mount 文件系统挂载点 管理文件系统挂载点
user 操作进程的用户和用户组 管理操作进程的用户和用户组
pid 进程编号 进程隔离
uts 主机名和主机域 隔离内核和版本标识符、Unix时间共享系统
ipc 信号量、消息队列、共享内存 管理访问IPC资源、进程间通信
net 网络设备、网络协议栈、端口等 管理网络接口

Docker

简介

Docker是一个用于开发、交付和运行应用程序的开放平台。Docker能够将应用程序与基础架构分开,从而可以快速交付软件。
Docker也是一个开源的应用容器引擎,让开发者可以打包应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的Linux或者Windows机器上,也可以实现虚拟化。
Docker在2013年大火,直到现在,已经成为了容器技术的代名词。容器完全使用沙箱机制(隔离运行机制),相互之间不会有任何接口。
Docker从一开始就以提供标准化的运行时环境为目标,真正做到“build once,run anywhere”,可以将同一个构建版本用于开发、测试、预发布、生产等任意环境,并且做到了与底层操作系统的解耦。在此基础上还进一步发展出CaaS(容器即服务)技术。

  • Docker是基于容器技术的轻量级虚拟化解决方案
  • Docker核心概念
    镜像:一个面向Docker容器引擎的只读模板;提供一种单一的组合型、叠加型文件(资源集合)
    容器:从镜像创建的运行实例
    仓库:集中保存镜像的地方

使用Docker的意义

Docker制定了容器化技术的标准化

  • Docker引擎统一了基础设施环境——Docker环境
  • Docker引擎统一了程序打包(装箱)方式——Docker镜像
  • Docker引擎统一了程序部署(运行)方式——Docker容器

使用场景

  • 打包应用程序简化部署
  • 可脱离底层硬件任意迁移(实现了应用的隔离,将应用拆分并进行解耦),例如服务器从腾讯云迁移到阿里云
  • 持续集成和持续交付(CI/CD):开发到测试发布
  • 部署微服务
  • 提供PAAS产品(平台即服务):OpenStack的云主机类似于阿里云的ECS,属于IAAS、Docker(K8S)属于PAAS

Docker引擎

Docker引擎是具有以下主要组件的客户端-服务端(C/S)应用程序
Server端:服务器是一种长期运行的程序,成为守护程序进程
Client端:CREST API指定程序可以用来与守护程序进行通信并指示其操作的接口
命令行界面(CLI)客户端(Docker命令)

Docker的架构

  • Docker使用客户端-服务器架构。客户端与守护进程进行对话,该守护进程完成了构建、运行和分发Docker容器的繁重工作。
  • Docker区别于传统的虚拟化,不需要虚拟硬件资源,直接使用容器引擎,所以速度快。
  • Docker客户端是许多Docker用户与Docker交互的主要方式。当使用诸如docker run命令时,客户端会将这些命令发送到dockerd,以执行这些命令。该docker命令使用Docker API。Docker客户端可以与多个守护程序通信。
  • Docker守护程序(dockerd)侦听Docker API请求并管理Docker对象,例如图像、容器、网络和卷。守护程序还可以与其他守护程序通信以管理Docker服务。

核心概念
镜像:一组资源集合,包含了应用程序软件包、应用程序相关的依赖包、运行应用程序所需要的基础环境(泛指操作系统)
容器:基于镜像的一种运行时状态
仓库:集中保存镜像的地方,默认在公共的Docker Hub上,也可以搞私有仓库

控制组

Linux上的Docker引擎还依赖于另一种称为控制组(cgroups)的技术。cgroup将应用程序限制为一组特定的资源。控制组允许Docker引擎将可用的硬件资源共享给容器,并有选择地实施限制和约束。例如:可以限制特定容器可用的内存。

部署Docker(20版)

1、环境部署

systemctl stop firewalld.service
setenforce 0
vim /etc
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值