docker(一)——docker概述、安裝與映象操作
阿新 • • 發佈:2021-10-07
目錄
一、Docker概述
1.Docker是一個開源的應用容器引擎,基於go語言開發並遵循apache2.0協議開源
2.Docker是在Linux容器裡執行應用的開源工具,是一種輕量級的“虛擬機器”
3.Docker的容器技術可以在一臺主機上輕鬆為任何應用建立一個輕量級的、可移植的、自給自足的容器,也可以利用docker在多臺主機上輕鬆的建立並執行容器
二、容器
2.1 定義
容器是在linux上本機執行,並與其他容器共享主機的核心,它執行的是一個獨立的程序,不佔用其他任何可執行檔案的記憶體,非常輕量
2.2 兩種重要技術
1.namesapce:docker通過namespace(名稱空間、名稱空間)隔離資源
2.cgroups:docker通過cgroups(資源配額)限制資源
namespace | 系統呼叫引數 | 隔離內容 |
---|---|---|
UTS | CLONE_NEWUTS | 主機名與域名 |
IPC | CLONE_NEWIPC | 訊號量、訊息佇列和共享記憶體 |
PID | CLONE_NEWPID | 程序編號 |
NETWORK | CLONE_NEWNET | 網路裝置、網路棧、埠等 |
MOUNT | CLONE_NEWNS | 掛載點(檔案系統) |
USER | CLONE_NEWUSER | 使用者和使用者組 |
三、docker容器和虛擬機器的區別
特性 | Docker容器 | 虛擬機器 |
---|---|---|
啟動速度 | 秒級 | 分鐘級 |
計算能力損耗 | 幾乎無 | 損耗50%左右 |
效能 | 接近原生 | 弱於 |
系統支援量(單機) | 上千個(根據業務大小而定,一般在200多個左右) | 幾十個 |
作業系統 | 主要支援Linux | 幾乎所有 |
隔離性 | 程序級別,資源隔離/限制 | 系統級別,完全隔離 |
部署難度 | 非常簡單 | 元件多,部署複雜 |
執行效能 | 和物理系統幾乎一致 | vm會佔用一些資源 |
映象體積 | 映象MB級別 | 映象GB級別 |
管理效率 | 簡單 | 元件相互依賴,管理複雜 |
網路連線 | 比較弱 | 藉助neutron可以靈活元件各類網路管理 |
四、docker核心概念
4.1 映象
執行容器的基礎,包含執行應用程式所需的所有內容
4.2 容器
從映象建立的執行例項
4.3 倉庫
存放image映象,倉庫大類(公共倉庫docker hub,私有倉庫harbor)
五、安裝Docker
5.1 環境準備
systemctl stop firewalld
setenforce 0
5.2 安裝依賴包
yum install -y yum-utils device-mapper-persistent-data lvm2
-------------------------------------------------------
1.yum-utils:提供了yum-config-manager工具
2.device mapper:是Linux核心中支援邏輯卷管理的通用裝置對映機制,它為實現用於儲存資源管理的塊裝置驅動提供了一個高度模組化的核心架構
3.device mapper儲存驅動程式需要device-mapper-persistent-data和lvm2
-------------------------------------------------------
5.3 設定阿里雲映象源
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
5.4 安裝Docker-CE並設定為開機自動啟動
yum install -y docker-ce docker-ce-cli containerd.io
systemctl start docker.service
systemctl enable docker.service
六、 Docker映象操作
6.1 檢視版本資訊和詳細內容
docker version
docker info
6.2 搜尋映象(公有倉庫)
docker search 關鍵字
docker search nginx
6.3 獲取下載nginx映象
docker pull 倉庫名稱[:標籤]
#如果下載映象時不指定標籤,則預設會下載倉庫中最新版本的映象,即選擇標籤為 latest標籤
docker pull nginx
6.4 映象加速下載
到阿里雲映象加速尋找自己的加速器
mkdir -p /etc/docker
tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://lavnlf3x.mirror.aliyuncs.com"]
}
EOF
systemctl daemon-reload
systemctl restart docker
6.5 檢視映象存放位置
6.6 檢視映象列表
#檢視下載映象資訊列表
docker images
6.7 獲取映象資訊
docker inspect 映象id
docker inspect 例項:標籤
6.8 為映象新增新標籤
docker tag 倉庫名:標籤 新倉庫名:新標籤名
6.9 刪除映象
docker rmi 倉庫名:標籤 #當一個映象有多個標籤時,只是刪除其中指定的標籤
docker rmi 映象id (-f) #會徹底刪除該映象,如果該映象已經被容器使用,正確的做法是先刪除依賴該映象的所有容器,再去刪除映象
6.10 存出鏡像,將映象儲存成為本地檔案
docker save -o 儲存位置/儲存檔名 映象
6.11 載入映象,將映象檔案重新匯入映象庫中
docker load < 存出的檔案
docker load -i 存出的檔案