docker容器以及lxc一


一、容器介紹

容器:容器是在隔離的環境里面運行的一個進程,這個隔離的環境有自己的系統目錄文件,有自己的ip地址,主機名等。

也有人稱:容器是一種輕量級虛擬化的技術

容器相對於kvm虛擬機的優勢:
1、容器能提供接近宿主機的性能,而kvm虛擬機會損害一部分宿主機的性能
2、同樣硬件配置的宿主機最多能啟動10虛擬機,那么它可以啟動100+容器
3、啟動一台kvm虛擬機,可以能需要20秒,啟動一個容器只需要1秒
4、kvm需要硬件cpu的支持,容器不需要

linux開機啟動流程如下:
bios開機硬件自檢
根據bios設置的優先啟動項
讀取mbr引導
加載內核
啟動第一個進程/sbin/init
執行系統初始化腳本/etc/rc.d/rc.sysinit完成系統初始化
運行想要的服務sshd

總結:kvm虛擬機運行一個sshd服務需要完整的開機啟動流程,容器是直接啟動sshd服務,中間的流程全部精簡。

容器的發展史:
1)chroot技術
chroot,即change root directory(更改 root 目錄),在 linux 系統中,系統默認的目錄結構都是以`/`,即是以根 (root) 開始的,而在使用chroot之后,系統的目錄結構將以指定的位置作為`/`位置

優勢:

增加了系統的安全性,限制了用戶的權力

在經過 chroot 之后,在新根下將訪問不到舊系統的根目錄結構和文件,這樣就增強了系統的安全性。這個一般是在登錄 (login) 前使用 chroot,以此達到用戶不能訪問一些特定的文件。

建立一個與原系統隔離的系統目錄結構,方便用戶的開發:

使用 chroot 后,系統讀取的是新根下的目錄和文件,這是一個與原系統根下文件不相關的目錄結構。在這個新的環境中,可以用來測試軟件的靜態編譯以及一些與系統不相關的獨立開發。

切換系統的根目錄位置,引導 Linux 系統啟動以及急救系統等:

chroot 的作用就是切換系統的根位置,而這個作用最為明顯的是在系統初始引導磁盤的處理過程中使用,從初始 RAM 磁盤 (initrd) 切換系統的根位置並執行真正的 init。另外,當系統出現一些問題時,我們也可以使用 chroot 來切換到一個臨時的系統。

2)lxc容器
全稱:linux container,通過namespaces 命名空間實現的隔離環境,通過cgroups實現的資源限制,提供類似虛擬機一樣的體驗。
3)docker容器
早期的docker容器底層就是調用的lxc,后期才換成了自己的libcontainer

搭建chroot環境:centos74

https://mirrors.tuna.tsinghua.edu.cn/lxc-images/images/centos/7/amd64/default/20210131_07%3A08/rootfs.tar.xz

cd /opt/centosren

wget https://mirrors.tuna.tsinghua.edu.cn/lxc-images/images/centos/7/amd64/default/20210131_07%3A08/rootfs.tar.xz

[root@bogon centosren]# tar xf rootfs.tar.xz 

解壓出的文件和根目錄下的文件是一樣的。

二、lxc容器的安裝和使用

lxc是為Ubuntu設計的,如果在Ubuntu上安裝,只需安裝lxc

安裝LXC內核版本不能低於2.6.32,對lxc至此最佳的為Ubuntu系統

lxc容器的依賴:
依賴CentOS-Base.repo和epel.repo
rm -fr /etc/yum.repos.d/local.repo
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo

yum -y install epel-release

安裝lxc容器(最好先下載好容器,再做橋接,否則網絡會出問題):

lxc   :lxc相關軟件 ;libcgroup  資源管理,限制 ;bridge-utils 管理橋接網卡
yum install lxc-* -y
yum install libcgroup* -y
yum install bridge-utils.x86_64 -y

yum -y install libvirtd

systemctl start libvirtd

systemctl start lxc

[root@localhost ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0 
TYPE=Ethernet
BOOTPROTO=none
NAME=eth0
DEVICE=eth0
ONBOOT=yes
BRIDGE=virbr0
[root@localhost ~]# cat /etc/sysconfig/network-scripts/ifcfg-virbr0 
TYPE=Bridge
BOOTPROTO=static
NAME=virbr0
DEVICE=virbr0
ONBOOT=yes
IPADDR=192.168.23.135
NETMASK=255.255.255.0
GATEWAY=192.168.23.2
DNS1=223.5.5.5

[root@localhost ~]# systemctl restart network

[root@localhost ~]# systemctl restart NetworkManager  只保留network,停掉NM

[root@localhost ~]# ll /etc/systemd/system/ 看看network有沒有和NM做超鏈接,如果沒有只保留一個就行

查看網橋信息:brctl show當STP為no時候,要改成yes

brctl stp virbr0 on

刪除網橋方法:

[root@localhost ~]# ifconfig virbr0 down
[root@localhost ~]# brctl delbr virbr0,最后再刪除配置文件

 

[root@localhost ~]# cat /etc/lxc/default.conf  這里面配置的網卡就是virbr0,所以創建的就是virbr0網卡

https://mirrors.tuna.tsinghua.edu.cn/lxc-images/images/

https://mirrors.tuna.tsinghua.edu.cn/help/lxc-images/

創建lxc容器:

lxc-create -n 容器名 -t 模板名 

模板目錄: /var/cache/lxc/模板名/

-d DIST 發行版本
-r RELEASE 系統版本
-a ARCH架構

方法一:

lxc-create -t download -n centos7 -- --server mirrors.tuna.tsinghua.edu.cn/lxc-images -d centos -r 7 -a amd64

或lxc-create -t download -n my-container -- --server mirrors.tuna.tsinghua.edu.cn/lxc-images

方法二:lxc-create -t centos -n test

lxc-create -t download -n centos7 -- --server mirrors.tuna.tsinghua.edu.cn/lxc-images

模板在:/var/cache/lxc/download/centos/7/amd64/default/

-n centos7這是容器名字

-- --server mirrors.tuna.tsinghua.edu.cn/lxc-images服務器下載地址

[root@localhost ~]# lxc-create -t download -n ubuntu -- --server mirrors.tuna.tsinghua.edu.cn/lxc-images

[root@localhost ~]# du -sh /var/cache/lxc/download/ubuntu/
89M /var/cache/lxc/download/ubuntu/

[root@localhost ~]# chroot /var/lib/lxc/ubuntu/rootfs/ passwd

[root@localhost ~]# du -sh /tmp/tmp.25a9bbkUSI/創建的時候會緩存到這個目錄下,下載完就會被刪除,會緩存到下面目錄下

[root@localhost ~]# du -smh /var/cache/lxc/download/centos/7/amd64/default/

[root@localhost ~]# du -smh /var/cache/lxc/download/centos/8/amd64/default/

設置容器的root用戶密碼
chroot /var/lib/lxc/centos7/rootfs passwd 密碼是rcs**?

啟動容器:
lxc-start -n centos7

 容器和宿主機共用一個內核

lxc容器的進程:
容器中運行的命令,在宿主機中都可以看到
推薦使用pstree命令來查看,需安裝
yum install psmisc.x86_64 -y

lxc容器的系統目錄文件:
lxc容器的系統目錄文件在宿主機的某一個目錄下/var/lib/lxc/容器名/rootfs

啟動容器lxc-start -n centos7
關閉容器lxc-stop -n centos7
刪除容器lxc-destroy -n centos7

登錄出logout

如果stop停不掉,就用kill把進程干掉

lxc-info -n centos7 查看lxc容器相關信息(名稱、是否在運行、PID,CPU使用、IO使用、內存使用、IP地址、網絡吞吐量)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM