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

来源:https://www.cnblogs.com/luoxiaoyi/archive/2022/10/26/16827160.html
-Advertisement-
Play Games

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


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後,掛載狀態的虛擬機就無法啟動了,只能重啟

桌面版:https://www.docker.com/products/docker-desktop
伺服器版:https://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 \
    https://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 中國官方鏡像 https://registry.docker-cn.com
DaoCloud 鏡像站 http://f1361db2.m.daocloud.io
Azure 中國鏡像 https://dockerhub.azk8s.cn
科大鏡像站 https://docker.mirrors.ustc.edu.cn
阿裡雲 https://<your_code>.mirror.aliyuncs.com
七牛雲 https://reg-mirror.qiniu.com
網易雲 https://hub-mirror.c.163.com
騰訊雲 https://mirror.ccs.tencentyun.com

Docker_3

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

Linux

#創建文件夾
mkdir -p /etc/docker
#在文件夾中創建一個文件
touch daemon.json
#寫入配置
vim daemon.json
{
	"registry-mirrors": [
    	"https://registry.docker-cn.com",
    	"https://docker.mirrors.ustc.edu.cn",
    	"https://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

命令參考:https://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存放目錄不能包含中文,否則會報錯,命令行要在當前目錄下執行。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 前情概要 隨著容器和雲技術的發展, 大量的應用運行在雲上的容器中, 它們的好處是毋庸置疑的, 例如極大的提高了我們的研發部署速度, 快速的擴縮容等等, 但是也存在一些小小的問題, 例如難以調試. 基於VM的部署我們可以通過安全的方式登錄到主機上做一些你想做的事情, 但是雲上的容器那就是不太方便了(目 ...
  • 一:背景 1.講故事 前段時間有位朋友在微信上找到我,說他的程式偶發性崩潰,讓我幫忙看下怎麼回事,上面給的壓力比較大,對於這種偶發性崩潰,比較好的辦法就是利用 AEDebug 在程式崩潰的時候自動抽一管血出來,看看崩潰點是什麼,其實我的系列文章中,關於崩潰類的dump比較少,剛好補一篇上來,話不多說 ...
  • 泛型(Generic) 允許延遲編寫類或方法中的編程元素的數據類型的規範,直到實際在程式中使用它的時候。即定義的時候沒有指定具體的參數類型,把參數類型的聲明推遲到了調用的時候才指定參數類型。 日常代碼編寫中泛型使用較多的類比如List,Dictionary,本次使用泛型重寫List類,加深理解。 首 ...
  • 關於 Air32F103-Template, 項目地址: https://gitee.com/iosetting/air32f103-template, 這是為 GCC Arm 工具鏈準備的 AIR32F103x 項目開發模板 ...
  • 記錄一次sshd服務啟動失敗 問題描述: 伺服器開機之後發現無法通過遠程連接伺服器終端,但是伺服器並未宕機,於是考慮到sshd服務出現異常 解決思路: 查看伺服器sshd服務運行情況 [root@haha-main-130 var]# systemctl status sshd -l ● sshd. ...
  • 結構圖: 環境準備 lvs [root@lvs ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0 TYPE=Ethernet BOOTPROTO=none NAME=eth0 DEVICE=eth0 ONBOOT=yes IPADDR=10.0.0. ...
  • lvs是內核裡面的功能,在內核中叫做ipvs 用戶空間使用ipvsadm這個工具包提供的工具來管理內核中的ipvs功能 ipvsadm 命令 ipvsadm核心功能: 集群服務管理:增、刪、改 集群服務的RS管理:增、刪、改 查看 使用 ipvsadm 管理集群服務:增、改、刪 增、修改: ipvs ...
  • LVS: lvs是一個負載調度器,由內核集成,性能強大,支持百萬計併發。 LVS集群的相關概念: VS:虛擬伺服器,指LVS伺服器自身 RS:提供服務的伺服器 CIP:客戶端ip地址 VIP:lvs伺服器對外發佈的ip地址,用戶通過vip訪問集群 DIP:LVS連內網的ip地址叫DIP,用於接收用戶 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...