01 Docker概述
Docker概述
Doker 容器技術,是一種虛擬化技術,虛擬機器也是屬於虛擬化技術
Docker 隔離,映象(最核心的環境 4m+ jdk + mysql )十分的小巧,秒級啟動
vm, linux centos原生映象(一個電腦!)隔離,需要開啟多個虛擬機器,幾個G
Docker的相關文件:前言 - Docker —— 從入門到實踐 (gitbook.io)
Docker 是一個開源的應用容器引擎,基於 Go 語言 並遵從 Apache2.0 協議開源。
Docker 可以讓開發者打包他們的應用以及依賴包到一個輕量級、可移植的容器中,然後釋出到任何流行的 Linux 機器上,也可以實現虛擬化。
容器是完全使用沙箱機制,相互之間不會有任何介面(類似 iPhone 的 app),更重要的是容器效能開銷極低。
比較 Docker 和 虛擬機器技術的不同:
- 傳統虛擬機器,虛擬出一條硬體,執行一個完整的作業系統,然後在這個系統上安裝和執行軟體
- 容器內的應用直接執行在 宿主機的核心中,容器是沒有自己的核心,也沒有虛擬我們的硬體,所以就輕便了
- 每個容器內是互相隔離的,每個容器都有一個自己的檔案系統,互不影響
DevOps(開發,運維)
應用更快速的交付和部署
傳統:一堆幫助文件,安裝程式
Docker:打包映象釋出測試,一鍵執行
更便捷的升級和擴縮容
使用Docker 之後,我們部署應用和搭積木一樣
專案打包為一個映象,擴充套件 伺服器A 伺服器B
更簡單的系統運維
在容器化之後,我們的開發,測試環境都是高度一致的
更高效的計算機資源利用
Docker是核心級別的虛擬化,可以在一個機器上可以執行很多的容器例項!伺服器的效能可以被壓榨到極致
Docker 安裝
Docker的基本組成
映象(image):
Docker 映象 是一個特殊的檔案系統,除了提供容器執行時所需的程式、庫、資源、配置等檔案外,還包含了一些為執行時準備的一些配置引數(如匿名卷、環境變數、使用者等)
docker映象就好比是一個模板,可以通過這個模板建立容器服務,tomcat映象=>run=>tomcat01容器(提供伺服器),通過這個映象可以建立多個容器(最終服務執行或者專案執行就是在容器中的)
容器(container):
Docker 利用 容器技術,獨立執行一個過著一組應用,通過映象來建立的。映象是靜態的定義,容器是映象執行時的實體。
容器可以啟動,停止,刪除,基本命令!
目前就可以把這個容器理解為就是一個簡易的linux系統,專案
倉庫(repository):
倉庫就是存放映象的地方!
倉庫分為公有倉庫和私有倉庫!
Docker Hub(預設是國外的)
阿里雲都有容器伺服器(配置映象加速!)
安裝
環境準備
- 需要會一點點的 Linux的基礎
- CentOS7
- 使用 XShell 連線遠端伺服器進行操作
幫助文件:
安裝
# 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 #centos8 不用加fast
#4、安裝 docker相關的 docker-ce 社群版 ee 企業版
yum install docker-ce docker-ce-cli containerd.io
#5、啟動 docker
systemctl start docker
#6、使用docker version 是否安裝成功
# 7、
docker run hello-world
8、檢視一下下載的這個 hello-world 映象
[root@vdevops /]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
hello-world latest feb5d9fea6a5 2 months ago 13.3kB
阿里雲映象加速
配置使用
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://0enfyjgl.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
Run的流程
底層原理
Docker是怎麼工作的
Docker 是一個 Client - Server 結構的系統,Docker的守護程序執行在主機上,通過Socket從客戶端訪問!
DockerServer 接收到 Docker-Client 的指令,就會執行這個命令
Docker 為什麼比 虛擬機器快
1、Docker 有著比虛擬機器更少的抽象層
2、docker 利用的是宿主機的核心,vm 需要是 Guest OS
新建一個容器的時候,docker不需要和虛擬機器一樣重新載入一個作業系統核心,避免引導