文章目錄
- Docker初識
-
- 為什麼會出現Docker
- 什麼是Docker
-
- 之前的虛拟化技術
- 容器虛拟化技術
-
- Linux容器
- Docker的三要素
-
- 鏡像
- 容器
- 倉庫
- 小結
- Docker的安裝
-
- 解除安裝Docker
- 安裝
-
- 更新yum包
- 安裝需要的軟體包
- yum設定Docker的倉庫
- yum檢視Docker可用版本
- 啟動Docker并設定開機自啟
- 配置自己的阿裡雲鏡像
-
- 登入或注冊阿裡雲Docker
- 阿裡雲的Centos安裝法
- 測試
- run做了什麼
- Docker的原理簡介
-
- Docker是怎麼工作的
- 為什麼Docker比VM執行快
-
- 什麼是Hypervisor?
Docker初識
為什麼會出現Docker
一個程式在進行遷移的時候。需要保證的條件很多才能正常的執行。
最難把控的就是環境配置每個機器上基本上都不一樣。
Docker可以從系統環境開始,自底至上完整打包。
什麼是Docker
Docker是基于Go語言實作的雲開源項目。
Docker主要目标 Build,Ship and Run Any App,Anywhere 一次封裝,到處運作。
Linux的容器技術的出現,Docker在它的基礎上發展過來的。
将應用運作在Docker容器上,而Docker容器在任何作業系統上都是一緻的。就實作了跨平台,跨伺服器。
隻需要一次配置好環境,到别的機子上就可以意見部署
java的技術我們都知道,最後都是要在Linux中進行執行的。
JDK,資料庫,redis,Tomcat等
之前的虛拟化技術
java底層也是存在一個虛拟機,以至于java可以進行跨平台的進行操作。
java代碼運作在虛拟機上,在由虛拟機進行将結果展示出來。
虛拟機就是帶環建安裝的一種解決方案
它可以在一個作業系統裡面運作另一個作業系統
我們想要在window中使用Linux的功能就需要用到虛拟機
但是虛拟機,資源占用多,存在很多備援部分
容器虛拟化技術
因為前面的虛拟機(一個作業系統中的運作另一個作業系統)
資源占用多,備援部分雜亂
Linux發出新的虛拟化技術,Linux容器
Linux容器
- 傳統虛拟機技術是虛拟出一套硬體後,在其上運作一個完整作業系統,在該系統上再運作所需應用程序;
- 而容器内的應用程序直接運作于宿主的核心,容器内沒有自己的核心,而且也沒有進行硬體虛拟。是以容器要比傳統虛拟機更為輕便。
- 每個容器之間互相隔離,每個容器有自己的檔案系統 ,容器之間程序不會互相影響,能卻分計算資源。
Docker就是在此基礎上出現的技術
Docker的三要素
鏡像
Docker 鏡像(Image)就是一個隻讀的模闆。鏡像可以用來建立 Docker 容器,一個鏡像可以建立很多容器。

容器
Docker 利用容器(Container)獨立運作的一個或一組應用。容器是用鏡像建立的運作執行個體
它可以被啟動、開始、停止、删除。每個容器都是互相隔離的、保證安全的平台。
可以把容器看做是一個簡易版的 Linux 環境(包括root使用者權限、程序空間、使用者空間和網絡空間等)和運作在其中的應用程式。
容器的定義和鏡像幾乎一模一樣,也是一堆層的統一視角,唯一差別在于容器的最上面那一層是可讀可寫的。
倉庫
倉庫(Repository)是集中存放鏡像檔案的場所。
倉庫(Repository)和倉庫注冊伺服器(Registry)是有差別的。倉庫注冊伺服器上往往存放着多個倉庫,每個倉庫中又包含了多個鏡像,每個鏡像有不同的标簽(tag)。
倉庫分為公開倉庫(Public)和私有倉庫(Private)兩種形式。
最大的公開倉庫是 Docker Hub(https://hub.docker.com/),
存放了數量龐大的鏡像供使用者下載下傳。國内的公開倉庫包括阿裡雲 、網易雲 等
小結
Docker 本身是一個容器運作載體或稱之為管理引擎。
我們把應用程式和配置依賴打包好形成一個可傳遞的運作環境,這個打包好的運作環境就似乎 image鏡像檔案。
隻有通過這個鏡像檔案才能生成 Docker 容器。
image 檔案可以看作是容器的模闆。Docker 根據 image 檔案生成容器的執行個體。
同一個 image 檔案,可以生成多個同時運作的容器執行個體。
Docker的安裝
Docker支援CentOS6.5以上版本。并對一些版本存在要求
檢視Linux的核心版本指令
uname -r
檢視CentOS版本
7版本
cat /etc/redhat-release
6版本
lsb_release -a
解除安裝Docker
可能之前有安裝過Docker可以使用該指令進行清除一下
yum remove docker docker-common docker-selinux docker-engine
安裝
更新yum包
使用 root 權限更新 yum 包(生産環境中此步操作需慎重,看自己情況,學習的話随便搞)
yum -y update
這一步會做很多的操作将Linux中的yum包進行更新。
我們都知道我們可以通過yum直接在Linux中進行下載下傳資源。
安裝需要的軟體包
yum-util
提供
yum-config-manager
功能,另兩個是
devicemapper
驅動依賴
yum install -y yum-utils device-mapper-persistent-data lvm2
yum設定Docker的倉庫
和Maven一樣的道理,使用阿裡會更加快一點。因為預設是外網倉庫
下面兩個都可用
# 中央倉庫
yum-config-manager --add-repo http://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檢視Docker可用版本
yum list docker-ce --showduplicates | sort -r
選擇準确一個版本号
yum -y install docker-ce-18.03.1.ce
啟動Docker并設定開機自啟
//啟動
systemctl start docker
//自動啟動
systemctl enable docker
配置自己的阿裡雲鏡像
在下載下傳鏡像的的時候可以走阿裡雲而不是DockerHut外網。(下載下傳會很慢)
登入或注冊阿裡雲Docker
點這裡: 開發者工具和資源
可能随着時間更新,網站就變得不一樣了
進入阿裡雲,打開控制台
左側的導航欄,找到容器服務→容器鏡像服務
找到鏡像加速器即可
按照文檔繼續操作
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://6igp4y3f.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
阿裡雲的Centos安裝法
# step 1: 安裝必要的一些系統工具
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
# Step 2: 添加軟體源資訊
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# Step 3: 更新并安裝 Docker-CE
sudo yum makecache fast
sudo yum -y install docker-ce
# Step 4: 開啟Docker服務
sudo service docker start
安裝效驗
[email protected]:$ docker version
測試
docker run hello-word
以上就是介紹使用docker指令擷取hello-world的鏡像的過程,執行過程先是從自己的本地伺服器上去找這個鏡像。沒有這個鏡像之後,再去阿裡雲的伺服器上找這個hello-world最新的鏡像。
run做了什麼
Docker的原理簡介
Docker是怎麼工作的
Docker是一個Client-Server結構的系統
Docker守護程序運作在主機上, 然後通過Socket連接配接從用戶端通路
守護程序從用戶端接受指令并管理運作在主機上的容器。 容器,是一個運作時環境,就是我們前面說到的集裝箱。
- 我們在使用Docker的時候基本上都是通過Docker指令進行操作的。
- 用戶端通過向Docker daemon發送指令進行操作主機中的鏡像和容器
- 如果主機沒有找到就會向遠端倉庫進行查找
為什麼Docker比VM執行快
VM就是我們使用的虛拟機,在上面進行安裝Linux系統
- docker有着比虛拟機更少的抽象層。由亍docker不需要Hypervisor實作硬體資源虛拟化,運作在docker容器上的程式直接使用的都是實際實體機的硬體資源。是以在CPU、記憶體使用率上docker将會在效率上有明顯優勢。
- docker利用的是主控端的核心,而不需要Guest OS。是以,當建立一個容器時,docker不需要和虛拟機一樣重新加載一個作業系統核心。仍而避免引尋、加載作業系統核心返個比較費時費資源的過程,當建立一個虛拟機時,虛拟機軟體需要加載Guest OS,返個建立過程是分鐘級别的。而docker由于直接利用主控端的作業系統,則省略了返個過程,是以建立一個docker容器隻需要幾秒鐘。