Docker 的基本組成
學習 Docker 首先要了解 Docker 的基本組成
鏡像(Image):
docker 鏡像就好比一個模板,可以通過這個模板來創建容器服務,tomcat 鏡像 ==> run ==> tomcat01 容器(提供服務器),通過這個鏡像可以創建多個容器(最終服務器運行或者項目運行就是在容器中!)。
容器(container):
Docker 利用容器技術,獨立運行一個或一組應用,通過鏡像來創建。
啓動,停止,刪除,基本命令!
目前可以把這個容器理解爲一個簡易的 Linux 系統
倉庫(respository):
倉庫就是存放鏡像的地方!
分爲公有和私有,默認 Docker Hub (國外)
安裝 Docker
# 1、卸載舊版本
yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
# 2、安裝需要的包
yum install -y yum-utils
# 3、設置鏡像倉庫
yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo # 默認國外倉庫,很慢,推薦阿里雲倉庫
yum-config-manager \
--add-repo \
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo # 推薦使用阿里雲
# 更新yum軟件包索引 yum makecache fast
#刪除異常源
rm -f /etc/yum.repos.d/docker-ce.repo
#使用官方源
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
# 4、安裝docker相關的
yum install docker-ce docker-ce-cli containerd.io
# centos8安裝docker可能會報錯
Error:
Problem: package docker-ce-3:19.03.11-3.el7.x86_64 requires containerd.io >= 1.2.2-3, but none of the providers can be installed
# 解決辦法:降低docker版本,或者升級containerd.io版本
wget https://download.docker.com/linux/centos/7/x86_64/edge/Packages/containerd.io-1.2.6-3.3.el7.x86_64.rpm
yum install -y containerd.io-1.2.6-3.3.el7.x86_64.rpm
# 然後重新安裝最新版本docker
yum install -y docker-ce docker-ce-cli containerd.io
# 5、啓動docker
systemctl start docker
# 6、查看是否啓動成功
docker version
過恭喜你,到這裏就表明你的 Docker 安裝成功了!
下面就是開始我們的 hello world了
# 7、hello world
docker run hello-world
我們可以看到,當你運行這個命令的時候 docker 是現在本地找這個鏡像,本地沒有,它纔會去遠程倉庫(docker hub)裏面下載,默認是下載最新版本的,你也可以通過 鏡像:TAG 來指定版本下載
# 8、查看一下下載的這個hello—world鏡像
docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
hello-world latest bf756fb1ae65 5 months ago 13.3kB
如果你不想用 Docker 怎麼辦呢?Docker 官方這裏也提供了刪庫跑路操作!
# 1、卸載依賴
yum remove docker-ce docker-ce-cli containerd.io
# 2、刪除資源
rm -rf /var/lib/docker
# /var/lib/docker docker的默認路勁
阿里雲鏡像加速
1、登錄到阿里雲找到容器服務
2、找到鏡像加速地址
3、配置使用
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://pcy6o191.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
Docker 底層原理
docker是怎麼工作的?
docker是一個Client - Server結構的系統,Docker的守護進程運行在主機上。通過Socket從客戶端訪問!
DockerServer接收到Docker - Client的指令,就會執行這個指令
Docker爲什麼比VM快
1、Docker有着比虛擬機更少的抽象層
2、Docker用的是宿主機的內核,vm用的是Guest OS
所以說,新建一個容器的時候,docker不需要像虛擬機一樣重新加載一個虛擬機內核,避免引導。虛擬機是加載Guest OS,分鐘級別的,而docker是利用宿主機的操作系統,省略了這個複雜的過程,秒級啓動
PS:我只是一個剛剛開始學習 Docker 的小白,學習源自B站 遇見狂神說