容器化技術大殺器 Docker

什麼是 Docker

<hr />

Docker 是一個虛擬化容器引擎,完全使用沙箱隔離機制,較傳統的 VM 虛擬機有很大優勢。

《Linux 安裝 Docker》

《Linux 安裝 Docker》

傳統虛擬機(VM)和虛擬化容器(Docker)的區別:

傳統的 VM 虛擬機不能共享資源 , 比如在 VMWare 中安裝了一個內存爲 4GB 的 Linux 操作系統 , 意味着該Linux系統使用了宿主機中固定的 4GB 內存且不能與宿主機或其它虛擬系統共享該資源 , 可能會造成資源浪費或資源溢出。

Docker 彌補了傳統 VM 虛擬機的缺點 , 每個虛擬化操作系統可以互相共享資源 , 解決了資源溢出或者資源浪費等一系列問題。

Docker 主要概念

<hr />

Docker 鏡像(Image)

操作系統分爲內核和用戶空間。對於 Linux 而言,內核啓動後,會掛載 root 文件系統爲其提供用戶空間支持。而 Docker 鏡像(Image)就相當於是一個 root 文件系統。

Docker 鏡像是一個特殊的文件系統,除了提供容器運行時所需的程序、庫、資源、配置等文件外,還包含了一些爲運行時準備的一些配置參數(如環境變量、用戶等)。

Docker 容器(Container)

Docker 鏡像和 Docker 容器的關係,就像是面向對象程序設計中的類與對象,鏡像是靜態的定義。

容器是鏡像運行時的實體,可以被創建、啓動、停止、刪除、暫停等。

容器內的進程是運行在一個隔離的環境裏,使用起來就好像是在一個獨立於宿主的系統下操作一樣,這種特性使得容器封裝的應用比直接在宿主運行更加安全。

Docker 倉庫(Registry)

鏡像構建完成之後,一行命令就可以在當前的宿主機上運行起來,但是如果要在其它服務器上使用這個鏡像,就需要一個集中存儲鏡像的倉庫 — 即 Docker 倉庫。

公有 Docker Registry:最常使用的 Registry 公開服務是官方的 Docker Hub,但在國內訪問會比較慢,而國內的一些雲服務商提供了針對 Docker Hub 的鏡像服務,常見的有 阿里雲DaoCloud 加速器,比直接從 Docker Hub 下載速度會提高很多。

私有 Docker Registry:可以在本地搭建私有 Docker Registry。Docker 官方提供了 Docker Registry 鏡像,可以直接使用做爲私有 Registry 服務。

安裝 Docker

<hr />

使用腳本自動安裝

$ curl -fsSL get.docker.com -o get-docker.sh

$ sudo sh get-docker.sh --mirror Aliyun

執行這兩行命令後,腳本就會自動的將一切準備工作做好,並且把 Docker CE 安裝在系統中。

使用 APT 安裝

# 安裝一些必要的系統工具
$ sudo apt-get update
$ sudo apt-get -y install apt-transport-https ca-certificates curl software-properties-common

# 安裝 GPG 證書
$ curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -

# 寫入軟件源信息
$ sudo add-apt-repository "deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"

# 更新軟件源
$ sudo apt-get -y update

# 安裝 Docker CE
$ sudo apt-get -y install docker-ce

Docker 用戶組

<hr />

安裝之後,默認情況下,Docker 命令會使用 Unix socket 與 Docker 引擎通訊,而只有 Root 用戶和 Docker 組的用戶纔可以訪問 Docker 引擎的 Unix socket,一般 Linux 系統上不會直接使用 Root 用戶。因此,更好地做法是將需要使用 Docker 的用戶加入 Docker 用戶組。

# 建立 Docker 用戶組
$ sudo groupadd docker

# 將用戶加入 Docker 用戶組
$ sudo usermod -aG docker 用戶名

鏡像加速器

<hr />

由於國內從 Docker Hub 下載鏡像有時會非常緩慢,因此可以配置國內雲服務商提供的鏡像加速器:

獲取阿里雲鏡像加速器

添加鏡像加速器

  • 登錄阿里雲
  • 進入 容器鏡像服務控制檯 > 鏡像加速器
  • 添加鏡像加速器
  • 複製加速器地址,如下圖 file

配置鏡像加速器

編輯 daemon.json 配置文件

$ sudo nano /etc/docker/daemon.json

添加以下代碼

{
  "registry-mirrors": [
    "鏡像加速器地址"
  ]
}

重啓 Docker 服務

$ sudo systemctl daemon-reload

$ sudo systemctl restart docker

檢查加速器是否生效

$ docker info

看到輸出以下內容,說明鏡像加速器配置成功

Registry Mirrors:
  鏡像加速器地址

Docker 常用命令

<hr />

Docker 鏡像命令

# 列出鏡像列表
$ docker images
$ docker image ls -a

# 運行 Docker 鏡像(守護態方式)
$ docker run -d 鏡像名

# 刪除指定 Docker 鏡像
$ docker image rm 鏡像名

# 刪除 Docker 虛懸鏡像
$ docker image prune

Docker 容器命令

# 列出正在運行的容器
$ docker ps -a

# 列出所有容器(包括已停止容器)
$ docker ps -l

# 進入運行中的 Docker 容器
$ docker exec -it 容器ID /bin/bash

# 停止 Docker 容器
$ docker stop 容器ID

# 刪除指定 Docker 容器
$ docker rm -f 容器ID

# 刪除停止的 Docker 容器
$ docker container prune

# 查看 Docker 容器歷史運行日誌
$ docker logs 容器名

# 實時監聽 Docker 容器運行日誌
$ docker logs -f 容器名

Docker 數據卷命令

# 創建 Docker 數據卷
$ docker volume create 數據卷名

# 列出所有 Docker 數據卷
$ docker volume ls

# 刪除指定 Docker 數據卷
$ docker volume rm 數據卷名

# 刪除未關聯(失效) Docker 數據卷
$ docker volume prune
$ docker volume rm $(docker volume ls -qf dangling=true)

Docker 文件操作命令

# 從主機複製文件到 Docker 容器中
$ sudo docker cp 主機內文件路徑 容器ID:容器內文件存儲路徑

# 從 Docker 容器中複製文件到主機中
$ sudo docker cp 容器ID:容器內文件路徑 主機內文件存儲路徑

更多幹貨請移步:https://antoniopeng.com

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章