首页 > 其他分享 >Docker原理

Docker原理

时间:2023-03-22 22:48:15浏览次数:30  
标签:容器 zhangsan 虚拟机 主机名 原理 Docker kube root

docker是什么:Docker 是完整的一套容器管理系统,所以想要搞懂 Docker 的概念,我们必须先从容器开始说起。

什么是容器?

- [x] 容器是用来装东西的,Linux 里面的容器是用来装应用的;

- [x] 容器就是将软件打包成标准化单元,以用于开发、交付和部署;

- [x] 容器技术已经成为应用程序封装和交付的核心技术;

容器原理:容器技术的核心,由以下几个内核技术组成:

- [x] Cgroups (Control Groups) — 资源管理

- [x] SELinux — 安全 (是针对于文件系统,文件的管理措施)

- [x] NameSpace — 命名空间

命名空间:

#是指可以对系统资源空间进行分割隔离的技术,例如:创建一个虚拟机,在虚拟机里的所有操作,都不会对真实机造成影响。

#命名空间分为六大类,可以从各个方面来对系统资源空间进行隔离;

Linux 的 NameSpace

- [x] UTS、NETWORK、MOUNT、USER、PID、IPC

UTS:

#主机名命名空间,作用:分割主机名,即在容器内修改主机名,不会对宿主机的系统造成影响,实现主机名的隔离;

没有隔离前,修改主机名为zhangsan,重新打开一个终端,主机名也被修改为zhangsan


[root@localhost ~]# hostname zhangsan   #临时设置主机名

[root@localhost ~]# bash         #立刻生效

[root@zhangsan ~]#

使用unshare命令模拟主机名的命名空间,修改主机名为namespace,重新打开一个终端,主机名没有发生变化,还是zhangsan


[root@zhangsan ~]# unshare -u /bin/bash

[root@zhangsan ~]# hostname namespace   #临时设置主机名

[root@zhangsan ~]# bash           #立刻生效

[root@namespace ~]#

NETWORK:网络命名空间,作用:分割网络,即容器内的网络配置和宿主机相互之间不受干扰的;

例如:

​ #在真实机器上的网卡名为eth0,IP地址为192.168.1.10/24;

​ #而在容器内的网卡名可以为ens33,ip地址为10.10.10.10/24;

MOUNT:

#挂载命名空间,作用:隔离文件系统,在容器内挂载的光盘或nfs共享目录,宿主机是无法看到里面的内容的;

例如:

​ #在linux系统上,创建一个虚拟机,在真机的/var/lib/ftp中挂载了一个光盘文件,但是在虚拟机的/var/lib/ftp中是没有光盘内容的,这就是MOUNT隔离;

USER:

#用户命名空间,作用:隔离用户,即容器内创建的用户不能用于登录宿主机,真机机里创建的用户也不能作用于容器;

PID:

#进程命名空间,作用:为了防止容器和宿主机中的进程冲突;

例如:

​ #在真实机中,有一个服务: nfs,PID为2250;

​ #在容器内,也有一个服务: chrony,PID为2250;

​ #真实机中用户,杀死(kill) PID号为2250的进程时,并不会对容器内的进程2250产生影响;

​ #而容器内的用户,杀死(kill) PID号为2250的进程时,也并不会对真实机内的进程2250产生影响;

IPC:

#信号向量命名空间,作用:通常和PID一起使用;

#用户杀死一个进程时,实际上是向进程发送一个信号(IPC),进程接收到这个信号后会执行对应的操作;

docker 的优缺点

优点

- [x] 相比于传统的虚拟化技术,容器更加简洁高效

- [x] 传统虚拟机需要给每个 VM 安装操作系统

- [x] 容器使用的共享公共库和程序

缺点

- [x] 容器的隔离性没有虚拟机强

- [x] 共用Linux内核,安全性有先天缺陷

docker 与传统虚拟化的对比

虚拟化:

#例如:虚拟机的使用,每一个虚拟机都要安装独立的操作系统;

容器:

#不需要安装独立的操作系统,只有一个Docker进程,和宿主机共享操作系统;

#容器没有操作系统,启动容器就跟开启一个进程一样,简单高效;

容器的高效性:

#启动虚拟机中的应用程序,需要先启动虚拟机的操作系统,然后再启动应用程序;

#启动容器内的应用程序,直接启动应用程序即可;

卸载防火墙和selinux(以kube-node1为例,kube-node2类似操作)

[root@localhost ~]# yum  -y remove  firewalld-*

[root@localhost ~]# vim /etc/selinux/config

SELINUX=disabled

配置IP地址和主机名(以kube-node1为例,kube-node2类似操作)

[root@localhost ~]# echo kube-node1 > /etc/hostname 

使用nmcli命令配置IP地址,网关,dns(以kube-node1为例,kube-node2类似操作)

[root@kube-node1 ~]# nmcli connection modify ens33 ipv4.method manual ipv4.addresses 192.168.11.148/24 ipv4.gateway 192.168.11.254 ipv4.dns 114.114.114.114 connection.autoconnect yes

[root@kube-node1 ~]# nmcli connection up eth0

[root@kube-node1 ~]# reboot

标签:容器,zhangsan,虚拟机,主机名,原理,Docker,kube,root
From: https://www.cnblogs.com/sre-chan/p/17245729.html

相关文章

  • JNDI RMI 远程访问(LOG4j2漏洞底层原理)
    JDK版本8u112客户端(模拟被攻击的网站)服务端(注册RMI服务,给被攻击网站提供RMI服务)服务端IP192.168.3.175恶意类(客户端发送请求给服务端,服务端再请求恶意类予以......
  • 10分钟看懂Docker和K8S
    2010年,几个搞IT的年轻人,在美国旧金山成立了一家名叫“dotCloud”的公司。这家公司主要提供基于PaaS的云计算技术服务。具体来说,是和LXC有关的容器技术。后来,dotCloud公司......
  • 20201306——Exp2 后门原理与实践
    一、实验准备1、实验要求使用netcat获取主机操作Shell,cron启动使用socat获取主机操作Shell,任务计划启动使用MSFmeterpreter(或其他软件)生成可执行文件,利用ncat或soca......
  • 你能说出 方法重载和方法重写 的原理吗?
    JVM执行字节码指令是基于栈的架构,就是说所有的操作数都必须先入栈,然后再根据需要出栈进行操作计算,再把结果进行入栈,这个流程和基于寄存器的架构是有本质区别的,而基于寄存器......
  • 深入理解 Python 虚拟机:字典(dict)的实现原理及源码剖析
    深入理解Python虚拟机:字典(dict)的实现原理及源码剖析在本篇文章当中主要给大家深入介绍一下在cpython当中字典的实现原理,在本篇文章当中主要介绍在早期python3当中的......
  • 【云原生 • Docker】用故事给老板讲Docker核心原理
    白话Docker核心原理Docker是什么?Docker使用Google公司推出的Go语言进行开发实现,基于操作系统内核中Cgroup(资源控制)、Namespace(资源隔离)与OverlayFS(数据存储)等技术,实现......
  • 20201226马瑞婕《网络对抗》Exp2后门原理与实践
    目录1实验基础1.1基础知识1.1.1后门的概念常用后门工具2.实验目标3.实验环境4.实验过程4.1使用netcat获取主机操作Shell,cron启动4.1.1在主机中使用ncat-l-p1226(个人......
  • 3、DockerFile解析
    一、是什么DockerFile是用来构建Docker镜像的文本文件,是由一条条构建镜像所需的指令和参数构成的脚本。Dockerfile是独立于docker引擎,存在于外面的一个文件DockerFile官......
  • Docker - 部署 sonic 云真机平台
    测试机经常被借来借去,通过开源项目搭建云真机平台,方便大家。sonic-开源云真机平台我这里直接把数据库跟服务通过compose一起部署了,注意:官方建议单独部署数据库。......
  • 数据库系统原理之数据库编程
    数据库编程第一节存储过程一、存储过程的基本概念存储过程是一组为了完成某项特定功能的SQL语句集,其实质上就是一段存储在数据库中的代码,它可以由声明式的SQL语句......