亚洲日本永久一区二区_国产精品k频道网址导航_首页aⅴ色老汉中文字幕_免费深夜全片观看_9久久9毛片又大又硬又粗_国产精品成亚洲电影_日韩不用播放器的av_欧美特色特黄视频

標簽:docker

Docker是一個開放源代碼軟件,是一個開放平臺,用于開發應用、交付(shipping)應用、運行應用。 Docker允許用戶將基礎設施(Infrastructure)中的應用單獨分割出來,形成更小的顆粒(容器),從而提高交付軟件的速度。

淺談大型項目中前端管理架構

今天來跟大家聊聊大型組織中(前端工程師的人數開始超過15人)前端管理架構,主要涉及的是團隊協作。 本文不討論在這樣的大公司中常見的管理問題或業務領域問題,而是關注前端的協作架構。

使用Docker啟動MySQL數據庫

在本文中,將來學習如何使用Docker CLI和Docker compose啟動MySQL容器。 如果你正在開發需要數據存儲的應用程序,則MySQL是一種流行的SQL數據庫。以前從未使用過MySQL或數據庫都沒關系-本教程將學習并熟悉啟動Docker容器的過程。這些概念可以應用于應用程序所需的任何依賴項。

如何安裝Docker?

Docker可以安裝在Linux,macOS或Windows 10上。Docker Engine可通過Docker Desktop在各種Linux平臺安裝Docker,?macOS安裝Docker和Windows 10上安裝Docker以靜態二進制安裝的形式使用。更多Docker安裝指南可以參照官方文檔介紹【Docker官方網站】,下面簡單總結一下安裝過程。

什么是Docker、鏡像、編排?

docker 是一個開源的應用容器引擎,讓開發者可以打包他們的應用以及依賴包到一個可移植的容器中,然后發布到任何流行的Linux機器上,也可以實現虛擬化,容器是完全使用沙箱機制,相互之間不會有任何接口。簡言之,就是可以在Linux上鏡像使用的這么一個容器。

面向WEB開發人員的Docker(一)

Docker的優勢很容易讓Web開發人員所忽略。對于開發運維來說,它被認為太過技術性、沒有必要。術語可能難以理解。教程從來沒有解釋如何在開發過程中使用Docker。在這里帶大家一起來感受Docker在WEB開發中應用。

Docker 化 Vue2 應用開發

隨著越來越多的項目使用 Vue3 ,前端項目可能面臨新舊版本的問題,需要在本地切換 node.js 的版本,甚至出現一些依賴沖突的問題,為了避免這些問題最佳的方式是用 Docker 容器化來隔離每個開發環境。本文將介紹如何使用 Docker 對 Vue2 前端項目進行 Docker 化,用于項目開發過程。

1Docker 有什么優勢?

Docker 有什么優勢

Docker的優勢很容易讓Web開發人員所忽略,對于開發運維來說,它被認為太過技術性、沒有必要。先來看看其有什么優勢:

  1. 簡化配置和部署:Docker可以打包應用程序及其依賴項,并在任何地方輕松部署,從而簡化了配置和部署的過程。
  2. 跨平臺支持:Docker容器可以在任何操作系統上運行,而不需要修改代碼,這使得開發、測試和部署更加靈活和高效。
  3. 資源利用率高:由于Docker容器共享操作系統內核,因此它們比傳統虛擬機更加輕量級,可以更好地利用硬件資源。
  4. 可靠性和安全性:Docker容器提供隔離環境,使得應用程序和依賴項在容器中運行更加安全和可靠,同時也避免了不同應用程序之間的沖突。
  5. 易于維護:Docker容器可以根據需要快速創建、銷毀和重建,使得應用程序的維護更加容易和高效。在資源擴容收縮方面可以很靈活。

對于開發者而言,還是有必要認識一下Docker,花點時間學習可以提高開發效率、讓運營變得簡單。

先談談個人感受,過去開發PHP程序的時候,需要自己配置Apache等環境,如果換了電腦又得來一遍。有了Docker,開發環境就只需要一句命令或者自己制作符合自己的鏡像,這樣開發的時候不管在哪里,只要安裝Docker,運行起來就可以開始開發調試了。生產環境也是如此,過去如果要配置10臺甚至更多的環境,需要一個一個來,有了Docker,實際上就只要執行一個shell文件就可以了,而且配置都可以是完全一樣的。

如果對Docker有興趣,推薦一本書籍《Docker實戰(第二版)

1Docker 容器怎么啟動一個 Centos 鏡像?

要啟動一個 CentOS 鏡像,可以在 Docker Hub 中查找需要的鏡像,運行以下命令:

docker run -it centos

運行后將從 Docker Hub 下載 CentOS 鏡像(如果它還沒有被下載過),并在交互模式下啟動容器。能夠看到一個新的 shell 提示符,該提示符表示已經進入 CentOS 容器內部。

如果想在后臺模式下運行 CentOS 容器,使用以下命令:

docker run -d centos

將在后臺啟動容器,并輸出容器的 ID

無論哪種方式,都可以使用 docker ps 命令來列出所有正在運行的容器。要停止容器,可以使用 docker stop 命令,后跟容器的 ID 或名稱。如下:

docker stop <CONTAINER_ID>

請注意,如果希望在容器內運行某些命令或應用程序,可以將它們附加到 docker run 命令的末尾。例如,要在 CentOS 容器中運行 ls 命令,可以使用以下命令:

docker run -it centos ls

將啟動一個新的 CentOS 容器,運行 ls 命令,然后退出容器。

 

1怎么使用 docker 開發調試 node 項目?

在本節中,將創建一個Node.js的“Hello World”應用程序,并將該應用構建成Docker鏡像,并從容器啟動。正常情況下,該鏡像可以部署到生產服務器上,Docker Compose 將用于覆蓋一些設置以創建開發和調試環境。這樣可以在主機PC上進行編碼開發,這樣文件將在一個持續運行的容器中執行。這有幾個好處:

  • Docker 將管理所有依賴項—— 不需要安裝和維護runtimes
  • 這個過程與本地開發沒什么不同——可以使用任何喜歡的編輯器和工具
  • 容器是隔離的——應用程序影響到主機PC,如使刪除文件
  • 任何時候都可以將應用程序分發給其他開發人員或測試人員——應用程序可以在任何其他設備上以零配置相同的方式運行。

本節創建的代碼文件在項目 https://github.com/QuintionTang/docker-nodejs

基于容器的應用開發

Docker 簡化了 Web 開發:任何的 Web 應用程序都可以在單個容器中運行。

但是……如果想將類似的容器部署到實時生產服務器,應用程序通常是無狀態的。這樣可以啟動任意數量的實例,任何實例都可以對請求做出響應。實際上,應用程序不應該將基本狀態數據存儲在本地文件或內存中。

例如:當用戶登錄時,應用程序將登錄憑據存儲在內存中。在開發過程中使用單個容器,都可以按預期運行沒有問題。

如果將應用程序部署到生產服務器并在兩個以上容器中運行,這些容器通過負載均衡接收請求。用戶訪問系統由 container1 處理其登錄。那么下一個請求可能就由 container2 提供服務,容器之間并沒有共享登錄狀態,這個時候就會出現未登錄的情況。

當然上面的問題是可以通過解決的,為隔離的容器提供一個中心存儲服務,維護應用的持久化存儲數據,例如數據庫。

無狀態 Web 應用程序是一個不錯的方式。這樣在生產環境中隨著用戶情況的增加可以快速進行擴縮容,自動添加更多的機器/容器。在解決實際需求的時候就需要考慮是否適合無狀態,如果對有狀態的應用程序進行轉換可能是不可行的。

這些在開發過程中都無關緊要,因為通常只會在單個容器中運行應用程序。如果不實用,就不必在生產中使用容器。

什么是 Node.js

這個想必大部份掘金的小伙伴都知道,這里不展開介紹,引用一段簡單的說明。

Node.js 是一種流行的、高性能 JavaScript 運行時,使用 Chrome 瀏覽器的 V8 JavaScript 引擎構建。它通常用于服務器端 Web 開發,但也已被前端或客戶端用來構建工具、桌面應用程序、嵌入式系統等所采用。

安裝 Node.js 后,可以使用以下命令執行 JavaScript 文件:

node index.js

單入口腳本文件是什么?理論上它可以命名為任何名稱,通常項目都使用index.js 作為入口。

前面的內容一直在使用 Docker Hub 提供的 Docker 鏡像。本節將介紹如何構建自己的 Docker 鏡像,該鏡像可以在開發和生產環境中安裝和執行應用程序。

可能你對 Node.js 不感興趣,但是不管使用何種語言(PHP、Python、Ruby、Go、Rust等)都適合使用 Docker 。

Hello World應用概述

該項目將使用Node.js的Express.js框架創建了一個“Hello World”應用程序。

應用運行地址為:http://localhost:3000/,返回純文本格式:Hello World!

從客戶端 Ajax 請求調用相同的 URL 會返回 JSON 編碼的對象:

{ "message": "Hello World!" }

當傳入請求的HTTP 標頭設置為時,可以識別 Ajax 調用。這是由大多數 Ajax 庫添加了:X-Requested-WithXMLHttpRequest

可以向 URL 路徑添加字符串,例如http://localhost:3000/devpoint 將返回 Hello Devpint!,響應內容為:

{ "message": "Hello Devpoint!" }

項目初始化

在項目目錄中執行以下代碼初始化項目:

npm init

Docker 調試NODE應用

輸入基本的信息后,會在項目根目錄下生成 package.json

接下來安裝 express ,執行一下命令:

npm install express --save

為了開發過程中能夠響應代碼的變更,接下來安裝 Nodemon,執行以下命令:

npm install nodemon --save-dev

nodemo 用來監聽 node.js 項目中文件的更改并自動重啟服務的工具,接下來為項目增加監聽規則,如需要忽略的目錄:

{
    "script": "./index.js",
    "ext": "js json",
    "ignore": [
        "node_modules/"
    ],
    "legacyWatch": true,
    "delay": 200,
    "verbose": true
}

修改項目 package.json ,在scripts屬性下添加啟動命令:

"start": "node ./index.js",
"debug": "nodemon --trace-warnings --inspect=0.0.0.0:9229 ./index.js",

這樣在終端可以執行一下的命令:

  • npm start : 一般用于生產環境
  • npm run debug :用于開發調試

應用腳本 index.js

腳本在根路由下定義簡單的響應請求

"use strict";
const port = process.env.NODE_PORT || 3005, // 定義HTTP默認端口或者從NODE_PORT環境變量獲取
    express = require("express"),
    app = express();
// 根路由
app.get("/:title?", (req, res) => {
    const message = `Hello ${req.params.title || "Devpoint"}!`;
    if (req.xhr) {
        res.set("Access-Control-Allow-Origin", "*").json({ message });
    } else {
        res.send(message);
    }
});
// 啟動HTTP服務
app.listen(port, () => console.log(`server running on port ${port}`));

接下來開始執行腳本:

npm run debug

打開瀏覽器輸入http://localhost:3005/,可以看到響應的響應,如下

Docker 運行node應用效果

現在可以嘗試去修改腳本 index.js 的內容,當有更新的時候,終端會重啟服務,刷新瀏覽器即可看到更新。

docker 環境下調試node應用

到目前為止,一個簡單的NodeJS應用程序已經完成。接下來將介紹如何在Docker環境里面運行調試。

后續可以結合谷歌瀏覽器調試Node.js應用

1在docker上安裝pytorch環境需要多少內存?

PyTorch是一個基于Python的科學計算庫,主要用于深度學習研究和開發。PyTorch提供了豐富的工具和接口,可以用于構建、訓練和部署深度學習模型。

在Docker上安裝PyTorch環境需要的內存取決于具體的應用場景和使用方式,但通常需要至少 2GB 的內存來運行PyTorch及其相關庫。如果要使用 GPU 進行深度學習訓練,還需要安裝相應的 GPU 驅動和 CUDA 工具包,并且需要更多的內存和顯存。

當然,對于 Docker 來說,可以通過設置資源限制來控制容器所占用的內存,這樣可以避免應用程序占用過多的內存導致系統出現問題。可以通過Docker的 -m 選項來設置容器最大可以使用的內存限制,例如:

docker run -it -m 2g pytorch/pytorch:latest

上述命令會啟動一個PyTorch容器,并將其最大內存限制設置為 2GB。這樣即使應用程序出現了內存泄漏等問題,也不會占用過多的系統資源。

1Docker 動態擴容的方法有哪些

Docker 動態擴容指的是在應用程序負載增加時,自動增加 Docker 容器實例的數量,以應對高負載的需求。以下是幾種 Docker 動態擴容的方法:

  1. Docker Swarm:Docker Swarm 是 Docker 官方提供的容器編排工具,它支持動態擴容和縮容,可以根據實際負載情況自動增加或減少 Docker 容器實例的數量。使用 Docker Swarm,可以通過命令行或 API 來創建和管理 Docker 服務,從而使容器的部署和管理更加方便和高效。
  2. Kubernetes:Kubernetes 是 Google 開源的容器編排工具,也支持自動伸縮。它提供了強大的自動化功能,可以通過自定義規則來調整容器的數量,以確保應用程序的高可用性和可擴展性。Kubernetes 還支持水平自動擴容和垂直自動擴容,可以根據容器內存使用率、CPU 使用率等指標來自動調整容器的數量。
  3. Docker Compose:Docker Compose 是 Docker 官方提供的容器編排工具,它支持通過命令行或 API 來創建和管理多個 Docker 容器,也可以通過使用 Docker Compose 文件來定義應用程序的各個服務以及它們之間的依賴關系。Docker Compose 還支持自動伸縮和負載均衡,可以根據應用程序負載情況動態調整容器的數量。
  4. 自定義腳本:如果以上方法不適用于您的需求,可以編寫自定義腳本來實現容器的動態擴縮容。例如,可以編寫 Python 腳本來監測容器的負載情況,當負載達到一定閾值時,自動增加容器實例的數量。這種方法需要一定的編程技能和經驗,但可以根據具體需求進行定制。

Kubernetes 與 Docker Swarm

容器編排正在快速發展,Kubernetes 和 Docker Swarm 是該領域的兩大參與者。Kubernetes 和 Docker Swarm 都是用于在集群內部署容器的重要工具。Kubernetes 和 Docker Swarm 在該領域有許多突出的利基 USP 和專業人士,它們將繼續存在。盡管他們兩人實現目標的方式截然不同且獨特,但歸根結底,他們的終點仍然很近。

Kubernetes 與 Docker Swarm

Kubernetes 概述

Kubernetes 基于谷歌多年在大規模生產中運行工作負載的經驗。根據Kubernetes 網站,“Kubernetes 是一個開源系統,用于自動部署、擴展和管理容器化應用程序。”

它將構成應用程序的容器分組為邏輯單元,以便于管理和發現。Kubernetes 建立在谷歌 15 年運行生產工作負載的經驗之上,并結合了來自社區的最佳創意和實踐。

Docker Swarm 概述

Docker swarm 是 Docker 自帶的容器的編排系統。它使用標準的 Docker API 和網絡,可以很容易地進入您已經在使用 Docker 容器的環境。Docker Swarm 旨在圍繞四個關鍵原則工作:

  1. 不那么雜亂/繁重,只用工作方法
  2. Docker Swarm 沒有單點故障選項
  3. 由于自動生成安全證書而安全。
  4. 輕松兼容向后版本。

總之,以上是 Docker 動態擴容的常見方法,可以根據實際需求選擇合適的方案。Docker Swarm、Kubernetes 和 Docker Compose 是 Docker 官方提供的容器編排工具,支持自動擴縮容,而自定義腳本可以根據具體需求進行定制。無論使用哪種方法,都需要對容器的資源利用情況進行監測和調整,以確保應用程序的高可用性和可擴展性。

 

1Docker 環境清理的常用方法有哪些?

Docker 讓開發和部署變得容易了,正因為容易導致不經意的就在不斷添加新的 docker 映像、容器等。這些都將占用了系統上的寶貴空間,而且是一直在快速地增加。所以有必要清理Docker環境,把一些不在使用的 Docker 資源清理掉。

首先使用 df 命令查看磁盤的使用情況:

docker system df

返回的結果如下:

TYPE            TOTAL     ACTIVE    SIZE      RECLAIMABLE
Images          33        8         16.8GB    16.39GB (97%)
Containers      9         1         37.43kB   36.44kB (97%)
Local Volumes   7         2         0B        0B
Build Cache     507       0         21.19GB   21.19GB

請注意,Reclaimable 就是可以恢復的大小,它是通過從總圖像大小中減去活動圖像的大小來計算的。

接下來就可以使用以下方法來清理:

  1. 清理停止的容器:使用 docker rm 命令清理停止的容器,命令格式為:docker rm <container_id>
  2. 清理未使用的鏡像:使用 docker image prune 命令清理未使用的鏡像,命令格式為:docker image prune
  3. 清理無用的數據卷:使用 docker volume prune 命令清理無用的數據卷,命令格式為:docker volume prune
  4. 清理未使用的網絡:使用 docker network prune 命令清理未使用的網絡,命令格式為:docker network prune
  5. 清理Docker緩存:使用 docker builder prune 命令清理Docker緩存,命令格式為:docker builder prune
  6. 清理Docker日志:使用 docker logs 命令查看容器日志,確認無用日志后,使用 truncate 命令清空日志文件,命令格式為:truncate -s 0 <logfile>
1Docker 啟動常見問題解決

Docker 無法啟動 Failed to start LSB: Create lightweight, portable, self-sufficient containers.

解決辦法執行以下命令:

wget -qO- https://get.docker.com/ | sh

Docker安裝完啟動時提示Failed to start docker.service: Unit docker.service is masked.

解決辦法是按照順序執行以下三條命令:

systemctl unmask docker.service
systemctl unmask docker.socket
systemctl start docker.service