生活随笔
收集整理的這篇文章主要介紹了
Linux容器基础
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一、打開新的REHL8虛擬機
設置虛擬機的主機名
[root@localhost ~]# hostnamectl set-hostname rhel8.caowei.cn[root@localhost ~]# hostnamerhel8.caowei.cn[root@localhost ~]#···
開啟一個新的終端驗證
關閉所有虛擬機的SELinux
[root@rhel8 ~]# vim? /etc/selinux/configSELINUX=disabled
設置所有虛擬機防火墻
[root@rhel8 ~]#? systemctl?? stop?? firewalld[root@rhel8 ~]# ?systemctl?? disable?? firewalld
構建Yum倉庫
[root@rhel8 ~]# mkdir?? /dvd[root@rhel8 ~]# mount?? /dev/cdrom???? /dvdmount: /dvd: WARNING: device write-protected, mounted read-only.[root@rhel8 ~]# ls?? /dvd[root@rhel8 ~]# vim? /etc/yum.repos.d/dvd.repo[haha]name=hahabaseurl=file:///dvd/AppStream/enabled=1gpgcheck=0??????????????????????????????[xixi]baseurl=file:///dvd/BaseOS/。gpgcheck=0[root@rhel8 ~]# yum repolist -v?? #顯示倉庫的詳細信息[root@rhel8 ~]# yum -y?? install? vsftpd
構建Yum倉庫,開機自動掛載
[root@rhel8 ~]# blkid /dev/cdrom[root@rhel8 ~]#? vim?? /etc/fstab/dev/cdrom?? /dvd?? iso9660?? defaults? 0? 0[root@rhel8 ~]# umount? /dvd[root@rhel8 ~]# ls?? /dvd[root@rhel8 ~]# mount? -amount: /dvd: WARNING: device write-protected, mounted read-only.[root@rhel8 ~]# ls?? /dvd???????
修改網卡命名規則
[root@rhel8 ~]# ifconfig?? |?? head? -2[root@rhel8 ~]# vim? /etc/default/grub…….GRUB_CMDLINE_LINUX="……. quiet? net.ifnames=0? biosdevname=0"·…….[root@rhel8 ~]#gr622-mkconfig -o /boot/grub2/grub.cfgGenerating grub configuration file ...done[root@rhel8 ~]# reboot??? #重啟系統[root@rhel8 ~]# ls? /dvd ???????????????#顯示光盤內容[root@rhel8 ~]# ifconfig? |? head? -2 ??#查看網卡名稱[root@rhel8 ~]# getenforce??? #查看SELinux運行模式
配置IP地址
[root@rhel8 ~]# nmcli? connection? show[root@rhel8 ~]# nmcli ?connection? delete? ens160[root@rhel8 ~]# nmcli? connection? show[root@rhel8 ~]# nmcli connection add type ethernet ifname eth0? con-name eth0[root@rhel8 ~]# nmcli connection modify eth0ipv4.method manual ipv4.addresses 192.168.4.108/24 connection.autoconnect yes[root@rhel8 ~]# nmcli connection up eth0[root@rhel8 ~]# ifconfig | head -2臨時配置IP地址
[root@rhel8 ~]# ifconfig? eth0? 192.168.4.108/24[root@rhel8 ~]# ifconfig? eth0? |? head? -2
模塊化安裝:類似于安裝一組軟件包
[root@rhel8 ~]# yum? module??? list[root@rhel8 ~]# yum -y module install container-tools[root@rhel8 ~]# rpm? -q? podman
容器基本信息 Linux中的容器是裝應用的容器就是將軟件打包成標準化單元,用于開發、交付和部署容器技術已經成為應用程序封裝和交付的核心技術
- 優點
- 相比于傳統的虛擬化技術,容器更加簡潔高效
- 傳統虛擬機需要給每個VM安裝操作系統
- 容器使用的共享公共庫和程序
- 鏡像是啟動容器的核心,鏡像由鏡像倉庫提供
- 在podman中容器是基于鏡像啟動的
- podman和容器的關系
- podman是完整的一套容器管理系統
- podman提供了一組命令,讓用戶更加方便直接地使用容器技術,而不需要過多關心底層內核技術
- podman所需軟件
- 系統軟件,位于 rhel-8.2-x86_64-dvd 源中
- 利用系統光盤,構建Yum倉庫
獲取鏡像
- 鏡像的名稱標識
- 每一個鏡像都對應唯一的鏡像 id
- 鏡像名稱(姓) + 標簽(名字) = 唯一
- 每一個鏡像都有標簽,如果沒寫就是默認標簽 latest
- 我們在調用鏡像的時候,如果沒有指定標簽也是 latest
podman? search? httpd
podman?? pull?? localhost/myos:latest
- 導入鏡像
- podman? load? -i? 備份文件.tar.gz
podman?? load? -i? /root/httpd.tar.gz
鏡像管理命令
鏡像管理練習
]# podman? images? ???#查看當前有哪些鏡像]# podman? load?? -i?? /root/httpd.tar.gz? ?????#導入鏡像]# podman? images ????#查看當前有哪些鏡像]# podman? load? -i?? /root/nginx.tar.gz????????? #導入鏡像]# podman? load? -i?? /root/myos.tar.gz? ??????????#導入鏡像]# podman? images? ???#查看當前有哪些鏡像REPOSITORY?????? TAG????? IMAGE ID?????? CREATED???????? SIZElocalhost/myos?? nginx??? 8a9042664597?? 11 months ago?? 392 MBlocalhost/myos?? httpd??? 2f2eb9bd1363?? 11 months ago?? 392 MBlocalhost/myos?? latest?? 2f57195050eb?? 16 months ago?? 392 MB
鏡像刪除練習
]# podman? images???? ??????#查看當前有哪些鏡像]# podman?? rmi? ?2f5 ???????#按照鏡像的ID值,刪除鏡像]# podman? images? ?????????#查看當前有哪些鏡像]# podman load? -i?? /root/myos.tar.gz ???????????#導入鏡像]# podman? images?????????? #查看當前有哪些鏡像]# podman?? images]# podman?? rmi??? localhost/myos:nginx ???#刪除鏡像]# podman?? images]# podman rmi? localhost/myos:latest? ????#刪除鏡像]# podman?? imagesREPOSITORY?????? TAG???? IMAGE ID?????? CREATED???????? SIZElocalhost/myos?? httpd?? 2f2eb9bd1363?? 11 months ago?? 392 MB
生成容器之前,RHEL8.2必須必備一個文件
[root@rhel8 ~]# touch? /etc/resolv.conf
容器基本命令
- podman run 命令
- podman? run? -選項?? 鏡像名稱:鏡像標簽?? 啟動命令
- 查看 run 的選項
- podman? help? run
- man? podman-run
- run? =? 創建 + 啟動 + 進入
- podman run 命令的選項
- 選項 -i,交互式
- 選項 -t,終端
- 選項 -d,后臺運行
- 選項 --name? 容器名字
- 啟動容器,并進入容器
podman run -it myos:latest /bin/bash
容器管理命令
- 啟動容器
- podman run –選項 鏡像名稱:鏡像標簽 啟動命令
- 查看容器
- podman ps [ -a 所有容器id ] [ -q 只顯示容器 id ]
- 刪除容器
- 容器管理命令啟動、停止、重啟
- podman start|stop|restart 容器id
- 進入容器
- podman? exec?? -it? 容器id?? 啟動命令
容器初步練習???????????????????????????
]# touch? /etc/resolv.conf]# podman run --name abc01 -it? localhost/myos:httpd?? /bin/bash[root@2b0b7c62ab42 /]# cat /etc/redhat-release[root@2b0b7c62ab42 /]# useradd dc[root@2b0b7c62ab42 /]# id? dc[root@2b0b7c62ab42 /]# exit]# podman ps? -a?? ?#查看所有的容器
容器放入后臺練習
]# podman run --name nsd01? -d localhost/myos:httpd]# podman? ps? -a]# podman? exec? -it?? nsd01? /bin/bash? #進入nsd01容器[root@962aa837e17b html]# cd /[root@962aa837e17b /]# useradd tc[root@962aa837e17b /]# id tcuid=1000(tc) gid=1000(tc) groups=1000(tc)[root@962aa837e17b /]# exit[root@rhel8 ~]# podman? ps? -a[root@rhel8 ~]# podman stop? nsd01?? #停止容器[root@rhel8 ~]# podman? rm -f? nsd01[root@rhel8 ~]# podman? ps? -a
四、容器進階-對外發布容器服務
- 容器可以與宿主機的端口進行綁定
- 從而把宿主機變成對應的服務,不用關心容器的IP地址
- 我們使用 -p 參數把容器端口和宿主機端口綁定
- 同一宿主機端口只能綁定一個容器服務
- -p? [可選IP]:宿主機端口:容器端口
- 例如:把宿主機變成 apache
podman run -itd -p 80:80 myos:httpd
podman run -itd -p 80:80 myos:nginx
容器放入后臺,端口綁定練習
]# podman run --name nsdweb -p 80:80??? -d?? localhost/myos:httpd ??]# podman ps -a]# podman exec -it nsdweb /bin/bash[root@5b69bf6956b0 html]# echo wo shi nsdweb > /var/www/html/index.html[root@5b69bf6956b0 html]# exitexit[root@rhel8 ~]# curl? http://192.168.4.108wo shi nsdweb[root@rhel8 ~]#??
五、容器進階-容器共享卷
- podman容器不適合保存任何數據
- podman可以映射宿主機文件或目錄到容器中
- 目標對象不存在就自動創建
- 目標對象存在就直接覆蓋掉
- 多個容器可以映射同一個目標對象來達到數據共享的目的
- 啟動容器時,使用 -v 映射參數
podman run -itd? -v? 宿主機對象:容器內對象?? 鏡像名稱:標簽
容器終極練習
]# podman rm -f?? nsdweb ???????#強制刪除容器]# podman run --name rqweb? -p 80:80????????????????????????????????? -v? /opt:/var/www/html -d? localhost/myos:httpd[root@rhel8 ~]# podman? ps? -a[root@rhel8 ~]# echo wo shi niuniubenben > /opt/index.html[root@rhel8 ~]# curl http://192.168.4.108??????? ??????wo shi niuniubenben[root@rhel8 ~]#?????????????
六、容器進階-管理系統服務
- systemd一個更高效的系統&服務管理器
- 開機服務并行啟動,各系統服務間的精確依賴
- 服務目錄:/usr/lib/systemd/system/
- 主要管理工具:systemctl
--files:生成文件類型
podman? generate? systemd?? --name? 容器名? --files?
systemctl? daemon-reload
用戶---->systemd---->服務啟動配置文件--->/usr/sbin/httpd
用戶--->systemd--->服務啟動配置文件--->podman start? 容器名字
容器必須是開啟的狀態
容器之光練習(必須是相對路徑,當前路徑必須是/usr/lib/systemd/system)
]# cd? /usr/lib/systemd/system]# podman? ps? -a]# podman generate systemd --name rqweb --files]# vim container-rqweb.service??? #大概瀏覽一般內容]# systemctl? daemon-reload??????? #重新加載服務配置文件]# podman? stop rqweb?? #必須手動停止]# podman ps -a]# systemctl start container-rqweb??]# podman ps -a]# systemctl enable container-rqweb???? #設置開機自啟動
總結
以上是生活随笔為你收集整理的Linux容器基础的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。