Docker運(yùn)行的整個(gè)生命周期

Docker使用多種操作系統(tǒng)的發(fā)行版
- 一個(gè)完整的操作系統(tǒng),是由linux內(nèi)核+發(fā)行版,組成的一個(gè)可以使用的完整操作系統(tǒng)。
- 利用docker容器,可以獲不同的發(fā)行版鏡像,然后基于該鏡像,運(yùn)行出各種容器去使用。
查看操作系統(tǒng)的兩大組成
# 查看操作系統(tǒng)的發(fā)行版
cat /etc/redhat-release
CentOS Linux release 7.9.2009 (Core)
# 查看操作系統(tǒng)內(nèi)核
uname -r
4.19.12-1.el7.elrepo.x86_64

使用docker,來切換不同的發(fā)行版,內(nèi)核都是使用宿主機(jī)的內(nèi)核
# 利用docker獲取不同的發(fā)行版鏡像
docker pull ubuntu
docker pull centos:7.8.2003
# 確認(rèn)當(dāng)前宿主機(jī)的發(fā)行版本
cat /etc/redhat-release
CentOS Linux release 7.9.2009 (Core)
# 查看本地的docker鏡像有哪些
docker images
# REPOSITORY TAG IMAGE ID CREATED SIZE
# nginx latest 4cdc5dd7eaad 32 hours ago 133MB
# redis latest 08502081bff6 2 weeks ago 105MB
# ubuntu latest 9873176a8ff5 2 weeks ago 72.7MB
# centos 7.8.2003 afb6fca791e0 14 months ago 203MB
# 運(yùn)行centos7.8.2003發(fā)行版
# 運(yùn)行容器,且進(jìn)入容器內(nèi)
# 參數(shù) 解釋 -i(交互式命令操作) -t(開啟一個(gè)終端) bash(進(jìn)入容器后執(zhí)行的命令)
docker run -it afb6fca791e0 bash
# 查看容器內(nèi)centos的發(fā)行版本
[root@e332fe985eac /]# cat /etc/redhat-release
CentOS Linux release 7.8.2003 (Core)
# 退出當(dāng)前的容器空間
exit
# 查看虛擬機(jī)的操作系統(tǒng)內(nèi)核
uname -r
4.19.12-1.el7.elrepo.x86_64
# 進(jìn)入ubuntu系統(tǒng)
docker run -it ubuntu bash
# 查看容器內(nèi)ubuntu的發(fā)行版本
root@5ea99c3a44f1:/# cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=22.04
DISTRIB_CODENAME=jammy
DISTRIB_DESCRIPTION="Ubuntu 22.04 LTS"
# 查看ubuntu的操作系統(tǒng)內(nèi)核(公用宿主機(jī)內(nèi)核)
root@5ea99c3a44f1:/# uname -r
4.19.12-1.el7.elrepo.x86_64
Docker部署服務(wù)的優(yōu)勢

Docker鏡像原理

Docker鏡像 分層原理

# 進(jìn)入正在運(yùn)行的容器內(nèi)
docker exec -it 18c7f9820954 bash
# 查看nginx運(yùn)行使用的基礎(chǔ)鏡像
root@18c7f9820954:/# cat /etc/os-release
PRETTY_NAME="Debian GNU/Linux 11 (bullseye)"
NAME="Debian GNU/Linux"
VERSION_ID="11"
VERSION="11 (bullseye)"
VERSION_CODENAME=bullseye
ID=debian
HOME_URL="https://www.debian.org/"
SUPPORT_URL="https://www.debian.org/support"
BUG_REPORT_URL="https://bugs.debian.org/"
Docker鏡像 寫時(shí)復(fù)制原理
鏡像分層的一大好處就是共享資源,例如有多個(gè)鏡像都來自于同一個(gè)base(基礎(chǔ))鏡像,那么docker host只需要存儲(chǔ)一份base鏡像。
- 內(nèi)存里也只需要加載一份host,即可為多個(gè)容器服務(wù)。
- 即使多個(gè)容器共享一個(gè)base鏡像,某個(gè)容器修改了base鏡像的內(nèi)容,例如修改/etc/下的配置文件,其他容器的/etc/下內(nèi)容是不會(huì)被修改的,修改動(dòng)作只限制在單個(gè)容器內(nèi),這就是容器寫時(shí)復(fù)制特性(Copy On Write),如下所示。


