Docker在windows系統以及Linux系統的安裝

Docker簡介和安裝

Docker是什麼

Docker 是一個應用打包、分發、部署的工具
你也可以把它理解為一個輕量的虛擬機,它只虛擬你軟體需要的運行環境,多餘的一點都不要,
而普通虛擬機則是一個完整而龐大的系統,包含各種不管你要不要的軟體。

跟普通虛擬機的對比

特性 普通虛擬機 Docker
跨平台 通常只能在桌面級系統運行,例如 Windows/Mac,無法在不帶圖形介面的伺服器上運行 支援的系統非常多,各類 windows 和 Linux 都支援
性能 性能損耗大,記憶體佔用高,因為是把整個完整系統都虛擬出來了 性能好,只虛擬軟體所需運行環境,最大化減少沒用的配置
自動化 需要手動安裝所有東西 一個命令就可以自動部署好所需環境
穩定性 穩定性不高,不同系統差異大 穩定性好,不同系統都一樣部署方式

打包、分發、部署

打包:就是把你軟體運行所需的依賴、第三方庫、軟體打包到一起,變成一個安裝包
分發:你可以把你打包好的「安裝包」上傳到一個鏡像倉庫,其他人可以非常方便的獲取和安裝
部署:拿著「安裝包」就可以一個命令運行起來你的應用,自動模擬出一摸一樣的運行環境,不管是在 Windows/Mac/Linux。

Docker部署的優勢

常規應用開發部署方式:自己在 Windows 上開發、測試 –> 到 Linux 伺服器配置運行環境部署。在學習一些東西的時候可以讓自己從複雜的部署和配置中解放出來,能夠全身心的去學習。

問題:我機器上跑都沒問題,怎麼到伺服器就各種問題了

用 Docker 開發部署流程:自己在 Windows 上開發、測試 –> 打包為 Docker 鏡像(可以理解為軟體安裝包) –> 各種伺服器上只需要一個命令部署好

優點:確保了不同機器上跑都是一致的運行環境,不會出現我機器上跑正常,你機器跑就有問題的情況。

Docker 通常用來做什麼

  • 應用分發、部署,方便傳播給他人安裝。特別是開源軟體和提供私有部署的應用
  • 快速安裝測試/學習軟體,用完就丟(類似小程式),不把時間浪費在安裝軟體上。例如 Redis / MongoDB / ElasticSearch / ELK
  • 多個版本軟體共存,不污染系統,例如 Python2、Python3,Redis4.0,Redis5.0
  • Windows 上體驗/學習各種 Linux 系統

重要概念:鏡像、容器

鏡像:可以理解為軟體安裝包,可以方便的進行傳播和安裝。
容器:軟體安裝後的狀態,每個軟體運行環境都是獨立的、隔離的,稱之為容器。

Windows安裝

寫在前面,如果直接在windows上安裝docker的話,需要注意vm虛擬機是不是在掛載狀態,安裝docker後,掛載狀態的虛擬機就無法啟動了,只能重啟

桌面版://www.docker.com/products/docker-desktop
伺服器版://docs.docker.com/engine/install/#server

  • 安裝後重啟前先做如下操作:

    1. 控制面板->程式->啟用或關閉 windows 功能,開啟 Windows 虛擬化和 Linux 子系統(WSL2)

      Docker_1

    2. 設置開機啟動 Hypervisor
      bcdedit /set hypervisorlaunchtype auto

      注意要用管理員許可權打開 PowerShell

    3. 確保 BIOS 已開啟虛擬化,下圖檢查是否已開啟好Docker_2

Linux安裝

  1. 環境準備
yum install git gcc gcc-c++ make automake autoconf libtool pcre pcre-devel zlib zlib-devel openssl-devel wget vim -y
  1. 安裝docker
yum install -y yum-utils \
           device-mapper-persistent-data \
           lvm2 --skip-broken
  1. 更新本地鏡像源
# 設置docker鏡像源
yum-config-manager \
    --add-repo \
    //mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
    
sed -i 's/download.docker.com/mirrors.aliyun.com\/docker-ce/g' /etc/yum.repos.d/docker-ce.repo

yum makecache fast

#安裝docker
yum install -y docker-ce
  1. 啟動docker

    systemctl start docker  # 啟動docker服務
    
    systemctl stop docker  # 停止docker服務
    
    systemctl restart docker  # 重啟docker服務
    
    [luomuchen@docker201 /]$ systemctl status docker
    ● docker.service - Docker Application Container Engine
       Active: active (running) since 二 2022-10-25 15:22:09 CST; 1h 11min ago #active (running)為啟動成功
    
    

設置鏡像源

windows

鏡像加速器 鏡像加速器地址
Docker 中國官方鏡像 //registry.docker-cn.com
DaoCloud 鏡像站 //f1361db2.m.daocloud.io
Azure 中國鏡像 //dockerhub.azk8s.cn
科大鏡像站 //docker.mirrors.ustc.edu.cn
阿里雲 //<your_code>.mirror.aliyuncs.com
七牛雲 //reg-mirror.qiniu.com
網易雲 //hub-mirror.c.163.com
騰訊雲 //mirror.ccs.tencentyun.com

Docker_3

"registry-mirrors": [
    "//registry.docker-cn.com",
    "//docker.mirrors.ustc.edu.cn",
    "//mirror.ccs.tencentyun.com"
  ]

Linux

#創建文件夾
mkdir -p /etc/docker
#在文件夾中創建一個文件
touch daemon.json
#寫入配置
vim daemon.json
{
	"registry-mirrors": [
    	"//registry.docker-cn.com",
    	"//docker.mirrors.ustc.edu.cn",
    	"//mirror.ccs.tencentyun.com"
  	]
}
#重新載入文件
sudo systemctl daemon-reload
#重啟docker
sudo systemctl restart docker

Docker快速安裝軟體

直接安裝的缺點

  • 安裝麻煩,可能有各種依賴,運行報錯。例如:WordPress,ElasticSearch,Redis,ELK
  • 可能對 Windows 並不友好,運行有各種兼容問題,軟體只支援 Linux 上跑
  • 不方便安裝多版本軟體,不能共存。
  • 電腦安裝了一堆軟體,拖慢電腦速度。
  • 不同系統和硬體,安裝方式不一樣

Docker 安裝的優點

  • 一個命令就可以安裝好,快速方便
  • 有大量的鏡像,可直接使用
  • 沒有系統兼容問題,Linux 專享軟體也照樣跑
  • 支援軟體多版本共存
  • 用完就丟,不拖慢電腦速度
  • 不同系統和硬體,只要安裝好 Docker 其他都一樣了,一個命令搞定所有

安裝Redis

使用命令行執行:

docker run -d -p 6379:6379 --name redis redis:latest

命令參考://docs.docker.com/engine/reference/commandline/run/

安裝Workpress

  • workpress需要掛載資料庫,所以這裡採用docker-compose.yml的方式

    version: '3.1'
    
    services:
    
      wordpress:
        image: wordpress
        restart: always
        ports:
          - 8080:80
        environment:
          WORDPRESS_DB_HOST: db
          WORDPRESS_DB_USER: exampleuser
          WORDPRESS_DB_PASSWORD: examplepass
          WORDPRESS_DB_NAME: exampledb
        volumes:
          - wordpress:/var/www/html
    
      db:
        image: mysql:5.7
        restart: always
        environment:
          MYSQL_DATABASE: exampledb
          MYSQL_USER: exampleuser
          MYSQL_PASSWORD: examplepass
          #MYSQL_ROOT_PASSWORD: 123456  #如果mysql報錯無法啟動,則加上這一條。
          MYSQL_RAND::OM_ROOT_PASSWORD: '1'
        volumes:
          - db:/var/lib/mysql
    
    volumes:
      wordpress:
      db:
    

    執行命令行

    docker-compose up -d
    
  • 注意:這裡的docker-compose.yml存放目錄不能包含中文,否則會報錯,命令行要在當前目錄下執行。

Tags: