port, pier, cargo containers

Dokcer-容器化世代你必須要知道 Right Now

Docker簡介

  • 環境上不統一的問題? 請用 Docker!!!

  • 每次建立環境都快抓狂的問題? 請用 Docker!!!

  • 想要高效率、輕量、秒開的環境,請用 Docker!!!

  • 不想搞死自己,請用 Docker!!!

  • 想潮到出水,請一定要用 Docker!!!

什麼是 Docker

Docker 是一個開源專案,出現於 2013 年初,最初是 Dotcloud 公司內部的 Side-Project。

它基於 Google 公司推出的 Go 語言實作。( Dotcloud 公司後來改名為 Docker )

我們先來看看官網的說明

Comparing Containers and Virtual Machines ( 傳統的虛擬化 ) 從這張圖可以看出 Containers 並沒有 OS ,容量自然就小,而且啟動速度神快( 詳細請看官網說明,連結請點我 )

Feauture Containers Virtual Machines
啟動 秒開 最快也要分鐘
容量 MB GB
效能
支援數量 非常多Containers 10多個就很了不起了
複製相同環境 超慢

一張圖讓你心花怒放

*那~~~為什麼我們要用Docker呢??? 因為..很潮,非常潮,潮到出水

  • Docker小百科
  1. Image 映像檔,當作在VM上面玩Ubuntu的作業環境(但是並非完整的作業系統)
  2. Container 容器,利用映像檔(Image)所創造出來的,一個Image可以創造出多個不同的Container Container 也可以被啟動、開始、停止、刪除,並且環境互相隔離(最棒的一點)。
  3. Registry 可以想像成一個很大的倉庫,存放很多很多的Images,可於官網查詢(https://hub.docker.com/)

Windows環境安裝Docker

Windows缺乏Docker Container所需Linux系統下的友善環境,故使用Dokcer有兩種方式:

  • 一. 安裝 Docker Desktop on Windows(條件限制):
    • Windows 10 64位元,專業版、企業版及教育版
    • 支援 Hyper-V 以及 Containers Windows
  • 二.安裝 Docker Toolbox on Windows(推薦方式):
    • 在 Windows 10 安裝 Git 以及 VirtualBox
    • 並透過Git bash操作虛擬機運行Docker Container

一、安裝 Git

  • 至官網下載,並依下方流程進行安裝..

  • 1.同意License並選擇下一步

  • 2.使用預設路徑

  • 3.GUI圖形化建議不勾選

  • 4.開始目錄使用預設

  • 5.使用Nano編輯(建議設定),或使用Vim等其它編輯

  • 6.建議勾選Git的指令新增至系統環境變數內

  • 7.建議勾選OpenSSL資料庫

  • 8.建議勾選掛平台專案方式

  • 9.建議勾選Git內建終端機操作

  • 10.依預設進行下一步

  • 11.延伸功能建議不勾選

  • 12.開始安裝

  • 13.安裝完成

二、安裝虛擬機VirtualBox

  • 至官網下載,按下一步安裝即可,連結請點我

二、安裝Docker Toolbox

  • 至官方GitHub下載,並依下方流程進行安裝,連結請點我

  • 1.建議不勾選幫助Toolbox改善,點選下一步

  • 2.依預設路徑

  • 3.建議只勾選Docker compose for Windows選項,虛擬機及Git自行 安裝(Kitematic圖形化管理箱建議不勾選)

  • 4.全部勾選並按下一步

  • 5.執行安裝

  • 6.開始安裝

  • 7.安裝完成

測試Docker是否正常運作

  • 1.點擊Docker Quickstart Terminal

  • 2.出現鯨魚圖案表示成功開啟

  • 3.會自動產生default虛擬機上

  • 4.運行Docker第一支程式測試

docker container run hello-world

Linux環境安裝Docker

Docker支援64位元Ubuntu作業系統

代號 版本 備考
Xenial 16.04 LTS版
Bionic 18.04 LTS版
Cosmic 18.10
Disco 19.04

懶人無腦安裝版!!!

* 1.無腦安裝會安裝所有的相依性與推薦的套件,且不需要經過確認
* 2.無腦安裝會安裝最新的版本(非 stable release 版本)
* 3.如果只是要單機個人玩不care開發穩定性,可以使用 
* 3.**官方不建議依此安裝**
#如果沒有curl套件要先 apt-get install curl
curl -fsSL https://get.docker.com | sh #記得要切root

正式安裝版(依據Docker官網步驟),連結請點我

  • 1.更新倉庫清單:
sudo apt-get update
sudo apt-get upgrade #請自行斟酌安裝的套件
  • 2.安裝套件,並透過HTTPS使用倉庫:
sudo apt-get install \
    apt-transport-https \
    ca-certificates \
    curl \
    gnupg-agent \
    software-properties-common
  • 3.取得Docker官方公鑰並簽署
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
  • 4.加入Docker APT倉庫
sudo add-apt-repository \
   "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
   $(lsb_release -cs) \
   stable"
  • 5.檢查倉庫
ls -l /etc/apt/sources.list.d
  • 6.安裝Docker CE
sudo apt-get install docker-ce docker-ce-cli containerd.io
  • 7.檢查Docker是否運作
systemctl status docker.service
  • 8.檢查Docker資訊
sudo docker info
  • 9.運行Docker第一支程式測試
sudo docker container run --rm hello-world

讓一般使用者可以使用docker(輸入完後重新開機) for Linux (不用在sudo docker)

sudo usermod -G docker -a USER #USER為使用者名稱

Dokcer-Compose 安裝

Docker-compose 可以透過該指令一口起停起多個 Container ,並讀取人類很好閱讀的 yaml 格式,安裝方式如下 :

  • 此範例以 Linux 為例,如果非 Linux 請至官方上查看你的作業系統安裝方式,官網連結請點我

1. 確保 Docker 引擎已經完成後

 # 下載最新 Docker-compose 入口程序 
 sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

Dokcer 使用GPU nvidia-docker (for Linux)

  • NVIDIA Docker 是 NVIDIA 官方所提供的 Docker 執行環境,可以讓有使用 CUDA 的程式放在 Docker 中執行。

  • 請先安裝Nvidia-driver

安裝nidia-driver請參考

  1. 加入第三方提供的drivers倉庫清單
sudo add-apt-repository ppa:graphics-drivers/ppa
sudo apt update
sudo apt install ubuntu-drivers-common
  1. 查看驅動程式狀態
ubuntu-drivers devices

  1. 推薦可以安裝440的版本,接下來就安裝驅動程式並且裝完重開機
sudo apt install nvidia-driver-440 
sudo reboot 

安裝nvidia-docker

## 加入nvidia-docker 軟體倉庫
distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add -
curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list

# 安裝 nvidia-container-toolkit 
sudo apt-get update && sudo apt-get install -y nvidia-container-toolkit
sudo systemctl restart docker

檢測是否安裝成功

docker container run --gpus all --rm nvidia/cuda nvidia-smi

安裝nvidia-docker2(docker 19.03版本就不用了)官方建議不使用 還是提供程式碼給Docker版本較舊的參考

#移除舊版Docker
#docker volume ls -q -f driver=nvidia-docker | xargs -r -I{} -n1 docker ps -q -a -f volume={} | xargs -r docker rm -f
#sudo apt-get purge nvidia-docker

#sudo apt-get install nvidia-docker2  
#sudo pkill -SIGHUP dockerd

舊版檢測是否安裝成功

#docker container run --runtime=nvidia --rm nvidia/cuda nvidia-smi

注. nvidia-docker官方文件請自行參閱,連結請點我


附錄 Centos 系列一鍵部署 docker-cli及 docker compose 的腳本

#!/bin/bash

function log_info() {
  DATE=$(date "+%Y-%m-%d %H:%M:%S")
  echo -e "\033[32m$DATE [INFO]: $1 \033[0m"
}

function log_err() {
  DATE=$(date "+%Y-%m-%d %H:%M:%S")
  echo -e "\033[31m$DATE [ERROR]: $1 \033[0m"
}

function check_release(){
  os=$(hostnamectl | grep ' Operating System' | grep CentOS)
  if [[ $os == '' ]]; then
    log_err "目前僅支援CentOS 系列安裝..."
    exit 1
  else
      log_info "檢測版本為CentOS 系列.."
  fi
}

function installer() {
  log_info "開始安裝Docker程序....."
  yum install -y yum-utils
  yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo
  yum install docker-ce docker-ce-cli containerd.io -y
  log_info "Dokcer安裝完畢,並啟動服務及開機自動載入..."
  systemctl start docker
  systemctl enable docker
  log_info "執行Hello World image"
  docker run hello-world
  log_info "安裝Docker Compose"
  curl -L "https://github.com/docker/compose/releases/download/1.28.6/docker-compose-$(uname -s)-$(uname -m)" \
   -o /usr/local/bin/docker-compose && \
   chmod +x /usr/local/bin/docker-compose
  docker-compose --version
  log_info "Let's rock it~~~"
}

if [[ $(whoami) != "root" ]]; then
  log_err "請使用 root 管理者"
  exit 1
fi

check_release
installer

Similar Posts

4 Comments

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *