1. 程式人生 > 其它 >docker 介紹及安裝操作

docker 介紹及安裝操作

docker 介紹及安裝操作

1、docker概述

2、docker安裝及操作

1、docker概述:

Docker是一個開源的應用容器引擎,基於go語言開發並遵循了apache2.0協議開源

是在Linux容器裡執行應用的開源工具

是一種輕量級的“虛擬機器”

Docker的容器技術可以在一臺主機上輕鬆為任何應用建立一個輕量級的、可移植的、自給自足的容器。

核心概念:

映象、容器、倉庫

映象:執行容器的基礎,包含執行應用程式所需的所有內容

容器:是從映象建立的執行例項

倉庫:集中儲存映象的地方(公有倉庫docker hub、私有倉庫 harhor)

總結:容器:提供在多臺主機上執行應用程式相同的執行環境

docker 是開源的容器 引擎,go語言開發的,是容器裡執行應用的工具,是一個輕量級的虛擬機器,

  可以利用docker在多臺主機上輕鬆的建立並執行容器

docker 容器可以被看作 執行在宿主機上的一個程序,容器共享主機的核心,容器間,是通過namespace(名稱空間)

   隔離資源,通過cgroups(資源配額)去限制資源

Docker是容器管理工具,容器由映象建立而來,映象從倉庫中獲取而來,倉庫分為公有、私有。

docker與虛擬機器區別:

特性Docker容器虛擬機器
啟動速度 秒級 分鐘級
計算能力損耗 幾乎無 損耗50%左右
效能 接近原生 弱於
系統支援量(單機) 上千個 幾十個
隔離性 資源隔離/限制 完全隔離

namespace的六項隔離:

namespace 系統呼叫引數 隔離內容
UTS CLONE_NEWUTS 主機名與域名
IPC CLONE_NEWWIPC 訊號量、訊息佇列和共享記憶體
PID CLONE_NEWPID 程序編號
NETWORK CLONE_NEWNET 網路裝置,網路棧,埠等
MOUNT CLONE_NEWNS 掛載點(檔案系統)
USER CLONE_NEWUSER 使用者和使用者組(3.8以後的核心才支援)

容器化越來越受歡迎的原因是:

  • 靈活:即便是最複雜的應用也可以集裝箱化
  • 輕量級:容器利用並共享主機核心
  • 可互換:可以及時部署更新和升級
  • 行動式:可以在本地構建,部署到雲,並在任何地方執行
  • 可擴充套件:可以增加並自動分發容器副本
  • 可堆疊:可以垂直和及時堆疊服務

2、docker安裝及操作:

目前 Docker 只能支援 64 位系統。

systemctl stop firewalld.service
setenforce 0

#安裝依賴包
yum install -y yum-utils device-mapper-persistent-data lvm2 
--------------------------------------------------------------------------------------------
yum-utils:提供了 yum-config-manager 工具。
device mapper: 是Linux核心中支援邏輯卷管理的通用裝置對映機制,
			    它為實現用於儲存資源管理的塊裝置驅動提供了一個高度模組化的核心架構。
device mapper儲存驅動程式需要 device-mapper-persistent-data 和 lvm2。
--------------------------------------------------------------------------------------------

#設定阿里雲映象源
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo 

#安裝 Docker-CE並設定為開機自動啟動
yum install -y docker-ce

systemctl start docker.service
systemctl enable docker.service 

#檢視 docker 版本資訊
docker version

  

-----------------docker映象操作----------------

搜尋映象:
格式:docker search 關鍵字
docker search nginx


獲取映象:
格式:docker pull 倉庫名稱[:標籤]
#如果下載映象時不指定標籤,則預設會下載倉庫中最新版本的映象,即選擇標籤為 latest 標籤。
docker pull nginx


映象下載加速:
瀏覽器訪問 https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors 獲取映象加速器配置

mkdir -p /etc/docker
tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://6ijb8ubo.mirror.aliyuncs.com"]
}
EOF
systemctl daemon-reload
systemctl restart docker



檢視映象資訊:
映象下載後存放在 /var/lib/docker 

#檢視下載的映象檔案資訊
cat /var/lib/docker/image/overlay2/repositories.json

#檢視下載到本地的所有映象
docker images


REPOSITORY   TAG       IMAGE ID       CREATED      SIZE
nginx        latest    ae2feff98a0c   9 days ago   133MB
--------------------------------------------------------------------------------------------
REPOSITORY:映象屬於的倉庫;
TAG:映象的標籤資訊,標記同一個倉庫中的不同映象;
IMAGE ID:映象的唯一ID 號,唯一標識一個映象;
CREATED:映象建立時間;
VIRTUAL SIZE:映象大小;
--------------------------------------------------------------------------------------------

#根據映象的唯一標識 ID 號,獲取映象詳細資訊
格式:docker inspect 映象ID號
docker inspect ae2feff98a0c



為本地新增新的標籤:
格式:docker tag 名稱:[標籤] 新名稱:[新標籤]
docker tag nginx:latest nginx:web

docker images | grep nginx




刪除映象:
格式:
docker rmi 倉庫名稱:標籤				#當一個映象有多個標籤時,只是刪除其中指定的標籤
或者
docker rmi 映象ID號						#會徹底刪除該映象

注意:如果該映象已經被容器使用,正確的做法是先刪除依賴該映象的所有容器,再去刪除映象。普通刪除無法刪除時,可以加-f選項強制刪除。

docker rmi nginx:web



存出鏡像:將映象儲存為本地檔案:
格式:docker save -o 儲存檔名 儲存的映象
docker save -o nginx nginx:latest			#存出鏡像命名為nginx存在當前目錄下
ls -lh



載入映象:將映象檔案匯入映象庫中:
格式:
docker load < 存出的檔案
或者
docker load -i 存出的檔案

docker load < nginx



上傳映象:
預設上傳到 docker Hub 官方公共倉庫,需要註冊使用公共倉庫的賬號。
可以使用 docker login 命令來輸入使用者名稱、密碼和郵箱來完成註冊和登入。
在上傳映象之前,還需要先對本地映象新增新的標籤,然後再使用 docker push 命令進行上傳。

docker tag nginx:latest nginx:web		#新增新的標籤
docker login								#登入公共倉庫
Username:
password:
docker push wl/nginx:web					#上傳映象

  

自古英雄多磨難