虛擬化技術是一種計算機資源管理技術,是將計算機的各種實體資源,如伺服器、網路、記憶體及儲存等,予以抽象、轉換後呈現出來。虛擬化技術打破了計算機實體結構間的,不可切割的障礙。使使用者可以比原本的組態更好的方式,來應用這些資源。
虛擬化技術主要作用:
高效能的物理硬體產能過剩和老的舊的硬體產能過低的重組重用,透明化底層物理硬體
軟體跨環境遷移問題(**的水土不服)
docker通俗的講是伺服器中高效能的虛擬機器,可以將一台物理機虛擬n多台虛擬機器的機器,互相之間隔離,互不影響。
第一句,是「build, ship and run」。也就是,「搭建、傳送、執行」,三板斧。
第二句口號就是:「build once,run anywhere(搭建一次,到處能用)」。
docker 是乙個開源的應用容器引擎,讓開發者可以打包他們的應用以及依賴包到乙個可移植的容器中,然後發布到任何流行的linux機器或windows 機器上,也可以實現虛擬化,容器是完全使用沙箱機制,相互之間不會有任何介面。
docker 和傳統虛擬化方式的不同之處,可見docker是在作業系統層面上實現虛擬
化,直接復用本地主機的作業系統,而傳統方式則是在硬體層面實現。
圖示幫助理解:
docker 的幾個核心概念如下,也可結合圖示理解
宿主機:安裝docker守護程序的linux伺服器,稱之為宿主機;
映象(image):docker 映象,就相當於是乙個 root 檔案系統。除了提供容器執行時所需的程式、庫、資源、配置等檔案外,還包含了一些為執行時準備的一些配置引數。
容器(container):映象執行之後的實體,映象和容器的關係,就像是物件導向程式設計中的類和物件一樣,映象是靜態的定義,容器是映象執行時的實體。容器可以被建立、啟動、停止、刪除、暫停等。
倉庫(repository):倉庫可看成乙個映象控制中心,用來儲存映象。
容器和映象的區別?
要點:容器 = 映象 + 可讀層。並且容器的定義並沒有提及是否要執行容器
總結:可以理解映象是檔案,容器是程序。容器是基於映象建立的,即容器中的程序依賴於映象中的檔案(映象就是容器的系統檔案),這裡的檔案包括程序執行所需要的可執行檔案,依賴軟體,庫檔案,配置檔案等等。也可以將容器看做是映象執行的乙個例項,或者是檔案與程序的關係。
每執行乙個容器,都會在映象上加乙個可寫層,但這一層並不會改變映象本身,這也就是為什麼,有時候你如果同乙個映象,啟動多個容器,裡面的內容不會變,但是如果將可寫層持久化,就要通過commit命令來把可寫層寫到磁碟,即生成新的映象。
(1)檢視電腦上已經已經安裝docker
yum list installed | grep docker
(2)安裝docker
yum -y install docker
(3)安裝後檢視docker版本
docker -v
(4)systemctl命令是系統服務管理器指令
啟動docker:systemctl start docker
停止docker:systemctl stop docker
重啟docker:systemctl restart docker
檢視docker狀態:docker info
開機啟動:systemctl enable docker
檢視docker幫助文件:docker --help
方案一:中科大
中國科學技術大學(ustc)是老牌的linux映象服務提供者了,還在遙遠的ubuntu 5.04版本的時候就在用。ustc的docker映象加速器速度很快。ustc docker mirror的優勢之一就是不需要註冊,是真正的公共服務。
編輯該檔案:
vi /etc/docker/daemon.json
在該檔案中輸入如下內容
方案二:阿里雲
如果中科大映象載入速度很慢,建議配置阿里雲映象加速,這個映象倉庫如果不好使,可以自己從阿里雲上申請!
必須要註冊,每個人分配乙個免費的docker映象加速位址,速度極快
配置完成記得重新整理配置
sudo systemctl daemon-reload
sudo systemctl restart docker
檢視映象 docker images
搜尋映象 docker search imagename
拉取映象 docker pull imagename:version
刪除映象 docker rmi imageid rmi-->remove image
檢視容器
檢視正在執行的容器:docker ps
檢視所有容器(檢視正在執行的和已經停止執行的) docker ps -a 或者docker ps -all
檢視最後一次執行的容器: docker ps -l
檢視停止的容器:docker ps -f status=exited
建立容器:互動式、守護式
互動式: docker run -it --name=容器名稱 映象名稱:標籤 /bin/bash
守護式: docker run -di --name=容器名稱 映象名稱(或映象id):標籤 /bin/bash
登入容器/進入容器的目錄:
docker exec -it 容器名稱 (或者容器id) /bin/bash
啟動容器: docker start 容器名稱(或者容器id)
停止容器: docker stop 容器名稱(或者容器id)
刪除容器docker rm 容器名稱(或者容器id)
資料卷是宿主機中的乙個目錄或檔案,當容器目錄和資料卷目錄繫結後,對方的修改會立即同步。乙個資料卷可以被多個容器同時掛載,乙個容器也可以被掛載多個資料卷。簡單來說資料卷本質其實是共享資料夾,是宿主機與容器間資料共享的橋梁。
容器資料持久化。
外部機器和容器間接通訊。
容器之間資料交換。
(1)1個容器掛載1個資料卷
注意事項:
1. 目錄必須是絕對路徑
2. 如果宿主機目錄不存在,會自動建立
3. 可以掛載多個資料卷
案例:#拉取centos映象
docker pull centos:7
#安裝啟動容器並掛載
docker run -di --name=c1 -v /root/host_data1:/root/c1_data centos:7 /bin/bash
(2)檢視容器已掛載的資料卷
docker inspect 容器名稱(容器id)
(3).1個容器掛載多個資料卷
可以通過以下命令,掛載多個資料卷
docker run -di --name=c1 -v /root/host_data1:/root/c1_data1 -v
/root/host_data2:/root/c1_data2 centos:7 /bin/bash
(4).多個容器掛載1個資料卷
多個容器掛載1個資料卷,實現資料共享
docker run -di --name=c2 -v /root/host_data_common:/root/c2_data centos:7
docker run -di --name=c3 -v /root/host_data_common:/root/c3_data centos:7
多個容器掛載1個容器(這個容器掛載1個資料卷)
##建立啟動c3資料卷容器,使用 –v 引數 設定資料卷
docker run -di --name=c3 -v /root/host_data_common:/root/c3_data centos:7
/bin/bash
##建立啟動 c1 c2 容器,使用 –-volumes-from 引數 設定資料卷
docker run -di --name=c1 --volumes-from c3 centos:7 /bin/bash
docker run -di --name=c2 --volumes-from c3 centos:7 /bin/bash
寫在最後:接下來幾個系列將會講解
docker中安裝mysql
elasticsearch,kibana環境搭建
kafka 環境搭建
一臉懵逼的Socket http對比
標籤 空格分隔 http tcp 今天整理一下已經懵逼好久的socket,http。想要弄清出他們的區別,首先要弄清一下tcp ip協議。每一抽象層建立在低一層提供的服務上,並且為高一層提供服務,看起來大概是這樣子的每一抽象層建立在低一層提供的服務上,並且為高一層提供服務,看起來大概是這樣子的 這樣...
redux中介軟體原理 從一臉懵逼到恍然大悟
前言react已經出來很久了,其生態圈之龐大,一鍋燉不下!各種react xx,已讓我們不堪重負,github上隨便乙個demo,引入的模組至少都是五指之數 看著頭疼,嚼之無味 在此建議新學者,可以從基礎的核心模組學起,前期不要考慮那些數量繁多的馬仔小弟,邊學邊寫,個人感覺前期核心要學的流程大致如下...
機器學習一臉懵筆記 04 線性代數
第01天 機器學習的線性代數 第02天 線性代數 第03天 向量 第04天 矩陣 第05天 矩陣型別和運算 第06天 矩陣分解 第07天 奇值分解 2020.01.28 機器學習實踐者應該加深對線性代數理解!理由如下 你需要學習線性代數符號 你需要能夠讀寫向量和矩陣符號。在書籍 和 上都用向量和矩陣...