隔离的环境拥有自己的系统文件,IP地址,主机名等等。
2.容器和虚拟化的区别:
kvm虚拟化:
需要硬件的支持,需要模拟硬件,可以运行不同的操作系统,启动时间分钟级(开机开启流程)。
linux开机启动流程:
bios开机硬件自检
根据bios设置的优先启动项
读取mbr引导:UEFI(GPT分区),包括mbr硬盘分区信息,内核的加载路径
启动第一个进程init, systemed................
容器虚拟化:
不需要硬件的支持。不需要模拟硬件,共用宿主机的内核,启动时间秒级(没有开机启动流程)
容器的启动流程:
共享宿主机的内核
启动第一个进程init, systemed................
KVM与docker的对比,参考:
https://www.qstack.com.cn/archives/148.html
3.chroot,新建一个子系统
linux容器下载地址:
https://mirrors.tuna.tsinghua.edu.cn/lxc-images/images/ubuntu/trusty/amd64/default/20190801_07%3A42/
,下载rootfs.tar.xz,解压到/opt/ubuntu/
切换系统到ununtu: chroot /opt/ubuntu/
查看环境变量:echo $PATH
缺少两个目录:/bin和/sbin
添加以上两个目录到PATH:export PATH=$PATH:/bin:/sbin
4.linux容器(lxc):linux container(命名空间,隔离环境,cgroups资源限制)
cgroups可以限制一个进程能够使用的资源,如cpu,内存,硬盘io
需要使用epel源
1).安装epel源:yum install epel-release.noarch -y
以下内容:将aliyun的域名,劫持到本地的服务器192.168.14.200
查看yum源:ls /etc/yum.repos.d/
删除yum源: mv /etc/yum.repos.d/ /etc/yum.repos.d.bak/
echo '192.168.14.200 mirrors.aliyun.com'
echo '192.168.14.200 mirrors.aliyun.com' >>/etc/hosts
cat /etc/hosts
下载repo文件:curl -o /etc/yum.repos.d/Centos-Base.repo http://192.168.14.200/repo/Centos-7.repo
以下内容:将epel源,劫持到本地的服务器192.168.14.200
culr -o /etc/yum.repos.d/epel.repo http://192.168.14.200/repo/epel-7.repo
2).安装lxc
yum install -y lxc-*
yum install -y libcgroup*
yum install -y bridge-utils.x86_64
桥接网卡:
vim /etc/sysconfig/network-scripts/ifcfg-eth0
TYPE=Ethernet
BOOTPROTO=none
NAME=eth0
DEVICE=eth0
ONBOOT=yes
BRIDGE=virbr0
vim /etc/sysconfig/network-scripts/ifcfg-virbr0
TYPE=Bridge
BOOTPROTO=static
NAME=virbr0
DEVICE=virbr0
ONBOOT=yes
IPADDR=10.0.0.11
NETMASK=255.255.255.0
GATEWAY=10.0.0.254
DNS1=233.5.5.5
启动cgroup
systemctl start cgconfig.service
启动lxc
systemctl start lxc.service
创建lxc容器
# lxc-create -t download -n my-container -- --server mirrors.tuna.tsinghua.edu.cn/lxc-images
lxc-create -t download -n centos6 -- --server mirrors.tuna.tsinghua.edu.cn/lxc-images -d centos -r 6 -a amd64
lxc-create -t centos -n test
修改容器的密码:
chroot /var/lib/lxc/test/rootfs passwd
创建lxc容器:
lxc-create -t centos -n test
启动lxc容器:
lxc-start -n test
如果要后台启动,使用参数-d
lxc-start -d -n test
登出lxc容器:
logout
克隆lxc容器:
lxc-clone -o test1 -n test2
关闭容器:
lxc-stop -n test
使用lxc-attache连接主机
lxc-attach -n test
删除一个lxc容器
[admin@localhost lxc]$ sudo lxc-destroy -n test