虚拟化容器,大数据,DBA,中间件,监控。

Docker与虚拟化的区别以及发展历程(一)

11 11月
作者:admin|分类:容器虚拟化

docker容器基本概述

1.什么是docker容器

容器就是在隔离的环境运行的一个进程,如果进程停止,容器就会销毁。隔离的环境拥有自己的文件系统、ip地址、主机名等。

2.容器和虚拟化的区别

Linux容器技术和虚拟化kvm的区别

容器资源消耗少、更轻量、性能更高,只能运行在Linux环境

kvm虚拟化:

需要硬件环境的支持,需要模拟硬件,可以运行不同的操作系统,启动时间分钟级(开机启动流程:bios开机自检—根据bios设置的优先启动项启动—mbr引导–加载Linux内核—启动第一个进程)

容器虚拟化:

不需要硬件的支持依赖,不需要模拟硬件,公用宿主机内核,启动时间秒级(没有开机启动流程,像是运行一个Linux命令,秒级启动)
在这里插入图片描述

kvm解决了硬件和操作系统之间的依赖

kvm有独立的虚拟磁盘,xml配置文件

docker解决了软件和操作系统环境之间的依赖,能够让独立服务或应用程序在不同的环境中得到相同的运行结果

docker镜像有自己的文件系统,共同物理机磁盘空间

docker容器是一种轻量级、可移植、自包含的软件打包技术,使应用程序可以在几乎任务地方以相同的方式运行,开发人员在自己笔记本上创建并测试好的容器,无需任何修改就能在生产系统的虚拟机上运行

总结:

​ 1)与宿主机使用同一个内核,性能损耗小

​ 2)不需要指令级模拟

​ 3)容器可以在CPU核心的本地运行命令,不需要任何专门的解释机制

​ 4)避免了虚拟化和系统之间调用替换的复杂性

​ 5)轻量级隔离,在隔离的同时还共共享机制,以实现容器和宿主机的资源共享

3.容器技术的发展过程

3.1.chroot技术

chroot技术,新建一个子系统,拥有自己完整的系统文件

做一个简单的chroot技术

1.下载一个fedora的目录文件模拟一下
https://mirrors.tuna.tsinghua.edu.cn/lxc-images/images/fedora/32/amd64/default/20200613_20%3A33/rootfs.tar.xz
[root@nfs ~]# tar xf rootfs.tar.xz -C fedora/
[root@nfs ~]# chroot fedora/

3.2.Linux容器lxc

Linux容器(lxc)Linux container(namespace命名空间,环境隔离及cgroup)

**命名空间:**命名空间起到一个分类的作用,比如多个脚本一起使用时可能会存在相同的函数名,这时就可以用命名空间来区分,例如name1.aa() name2.aa()name就是命名空间

cgroups:限制一个进程能够使用的资源,比如内存、CPU、硬盘io

3.2.1安装lxc

[root@ansible ~]# yum  -y install lxc*
[root@ansible ~]# yum  -y install libcgroup*
[root@ansible ~]# yum  -y install bridge-utils*

3.2.2.配置lxc网络环境

桥接网卡

[root@ansible ~]# echo 'TYPE=Ethernet
BOOTPROTO=none
NAME=eth0
DEVICE=eth0
ONBOOT=yes
BRIDGE=virbr0' > /etc/sysconfig/network-scripts/ifcfg-ens33


[root@ansible ~]# echo 'TYPE=Bridge
BOOTPROTO=static
NAME=virbr0
DEVICE=virbr0
ONBOOT=yes
IPADDR=192.168.81.210
NETMASK=255.255.255.0
GATEWAY=192.168.81.2
DNS1=192.168.81.2
> /etc/sysconfig/network-scripts/ifcfg-virbr0

3.2.3.启动lxc

[root@ansible ~]# systemctl start cgconfig
[root@ansible ~]# systemctl start lxc

3.2.4.安装lxc容器

第一种方式

[root@ansible ~]# lxc-create -t download -n centos6 -- --server 
s -d centos -r 7 -a amd64

参数解释
-t  指定模板
-n	容器名称
--server	容器来源
-d	操作系统类型
-r	操作系统版本
-a	操作系统位数

也可以不加后面的参数进入交互式
[root@ansible ~]# lxc-create -t download -n centos6 -- --server mirrors.tuna.tsinghua.edu.cn/lxc-images
Distribution: centos
Release: 7
Architecture: amd64

第二种方式

[root@ansible ~]# lxc-create -t centos -n centos-test

直接根据当前操作系统安装一个一摸一样的操作系统,默认最小安装

3.2.4.使用lxc容器

1)查看安装的容器
容器默认安装在/var/lib/lxc目录
[root@ansible ~]# ls /var/lib/lxc/
centos6  centos-test  my-container

2)修改密码
[root@ansible ~]# chroot /var/lib/lxc/centos6/rootfs/ passwd
更改用户 root 的密码 。
新的 密码:
无效的密码: 密码少于 8 个字符
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。

3)启动容器
[root@ansible ~]# lxc-start -n centos6

4)后台启动
[root@ansible ~]# lxc-start -d -n centos6 
 
5)通过attach连接
[root@ansible ~]# lxc-attach -n centos6
[root@centos ~]# 

6)克隆
[root@ansible ~]# lxc-clone -o centos7 -n centos7_kl
[root@ansible ~]# ls /var/lib/lxc/
centos  centos6  centos7  centos7_kl  my-container

7)删除容器
[root@ansible ~]# lxc-stop -n centos6
[root@ansible ~]# lxc-destroy -n centos6


7)完整模式
[root@ansible ~]# lxc-start -d -n centos7 
[root@ansible ~]# lxc-attach -n centos7
[root@centos7 ~]# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
13: eth0@if14: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether fe:5c:f3:dc:f0:96 brd ff:ff:ff:ff:ff:ff link-netnsid 0
    inet 192.168.81.135/24 brd 192.168.81.255 scope global dynamic eth0
       valid_lft 1745sec preferred_lft 1745sec
    inet6 fe80::fc5c:f3ff:fedc:f096/64 scope link 
       valid_lft forever preferred_lft forever

浏览433 评论0
返回
目录
返回
首页
Docker的安装及日常命令的使用(二) harbor私有仓库-主从配置(十四)