Ubuntu 安裝docker docker-compose

Docker 通過提供輕量級、可移植且高效的解決方案,簡化了軟件開發和部署。“docker build”命令是 Docker 鏡像創建過程的核心。本文將探討 Docker 構建命令、用法以及 Docker 構建的優化。

Docker 構建有什么作用?

Docker build 是一個命令行界面 CLI命令,允許你根據 Dockerfile 中指定的指令構建 Docker鏡像。它使鏡像創建過程自動化,確保了一致性和可重復性。

Docker 構建是如何工作的?

Docker 構建通過執行 Dockerfile 中的指令序列來創建鏡像。這些指令包括復制文件、安裝依賴項和執行命令等操作。當運行?docker build?命令時,Docker 守護進程會逐條讀取并執行 Dockerfile 中的指令,每條指令都會生成一個輕量級的只讀層。這些層被堆疊起來,形成最終的鏡像。

為了提高效率,Docker 會緩存那些自上次構建以來未發生變化的層,這樣在后續的構建中就可以直接使用這些緩存層,而無需重新構建,從而大幅縮短構建時間。

完成所有指令后,Docker 將生成一個包含應用程序及其所有依賴項的最終鏡像,這個鏡像隨時準備被用來運行容器。

安裝 Docker

安裝必要的依賴包

sudo apt-get install apt-transport-https ca-certificates curl software-properties-common

添加 Docker 的官方 GPG 密鑰

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

添加 Docker APT 源

sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"

?更新軟件包索引

sudo apt-get update

安裝 Docker CE (社區版)

sudo apt-get install -y docker-ce docker-ce-cli containerd.io

驗證 Docker 是否安裝成功

sudo docker --version
Docker version 24.0.5, build 12345678

?啟動并設置 Docker 開機自啟

sudo systemctl start docker
sudo systemctl enable docker

將當前用戶加入 docker 用戶組
默認情況下,只有 root 用戶或 docker 用戶組的成員才能運行 Docker 命令。如果您希望當前用戶無需使用 sudo 即可運行 Docker,可以將用戶加入 docker 用戶組:

sudo usermod -aG docker $USER

然后重新登錄終端或重啟系統以使更改生效

檢查 Docker 服務是否正在運行:

sudo reboot #重啟
sudo systemctl status docker

測試 Docker

docker run hello-worldHello from Docker!
This message shows that your installation appears to be working correctly.
  • 該命令會從 Docker Hub 上拉取?hello-world?鏡像,并在容器中運行。
  • 如果成功,會在終端中看到一段歡迎信息。

安裝docker-compose

docker-compose 是一個用于定義和運行多容器 Docker 應用程序的工具。通過 docker-compose,你可以使用 YAML 文件來配置應用程序的服務、網絡和卷。它簡化了復雜應用的配置和啟動過程,使得管理和部署多個相互依賴的容器變得非常簡單。

# 刪除舊版本(如果有)
sudo rm -f /usr/local/bin/docker-compose#離線安裝
wget -c --no-check-certificate https://github.com/docker/compose/releases/download/v2.10.2/docker-compose-Linux-x86_64
sudo mv docker-compose-Linux-x86_64 /usr/local/bin/docker-compose# 或者使用阿里云鏡像源下載
sudo curl -L "https://mirrors.aliyun.com/docker-toolbox/linux/compose/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
# 檢查下載內容是否為二進制文件
file /usr/local/bin/docker-compose
#/usr/local/bin/docker-compose: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 3.2.0, BuildID[sha1]=..., not stripped# 賦予執行權限
sudo chmod +x /usr/local/bin/docker-compose# 驗證安裝
docker-compose --version

在docker-compose.yml文件所在目錄,運行容器服務

docker-compose up

docker-compose.yml 文件詳解

docker-compose.yml 文件用于定義服務、網絡和卷。這個文件使用 YAML 格式編寫,并且可以通過它來描述多個容器之間的關系以及它們的配置。下面是一個詳細的解釋,幫助你理解如何編寫和使用 docker-compose.yml 文件。

version: '3.4'
services:project:image: shanghai.aliyuncs.com/hyperf-work/skeleton:hyperf-7.4container_name: test-apirestart: alwaysports:- "9005:8080"volumes:- ./:/wwwentrypoint:  ["php", "/www/bin/hyperf.php", "start"]#entrypoint:  ["sleep", "3600"]networks:- manage-v3-apinetworks:test-api:driver: bridge
  • image: 使用的鏡像地址,這里是阿里云的一個私有鏡像倉庫中的 Hyperf 項目鏡像。
  • container_name: 容器名稱,命名為 test-api。
  • build: 如果需要從 Dockerfile 構建鏡像,可以指定路徑。
  • depends_on: 表示依賴的服務,但請注意這不會等待直到依賴服務完全啟動。
  • restart: 設置容器重啟策略為 always,即無論退出狀態如何,Docker 都會自動重啟該容器。
  • environment: 設置環境變量。
  • ports: 端口映射,將主機的 9005 端口映射到容器的 8080 端口。可以使用9005或者8080訪問
  • volumes: 卷掛載,將當前目錄(.)掛載到容器內的 /www 目錄。
  • command: 覆蓋默認的命令
  • entrypoint: 容器啟動時執行的命令,這里是啟動 Hyperf 應用。
  • networks: 容器連接的網絡,指定為 test-api 網絡。
  • test-api: 定義了一個名為 test-api 的自定義網絡,使用 bridge 網絡驅動。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/71860.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/71860.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/71860.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Unity開發——CanvasGroup組件介紹和應用

CanvasGroup是Unity中用于控制UI的透明度、交互性和渲染順序的組件。 一、常用屬性的解釋 1、alpha:控制UI的透明度 類型:float,0.0 ~1.0, 其中 0.0 完全透明,1.0 完全不透明。 通過調整alpha值可以實現UI的淡入淡…

每天五分鐘深度學習PyTorch:向更深的卷積神經網絡挑戰的ResNet

本文重點 ResNet大名鼎鼎,它是由何愷明團隊設計的,它獲取了2015年ImageNet冠軍,它很好的解決了當神經網絡層數過多出現的難以訓練的問題,它創造性的設計了跳躍連接的方式,使得卷積神經網絡的層數出現了大幅度提升,設置可以達到上千層,可以說resnet對于網絡模型的設計具…

大模型巔峰對決:DeepSeek vs GPT-4/Claude/PaLM-2 全面對比與核心差異揭秘

文章目錄 一、架構設計深度解剖1.1 核心架構對比圖譜1.2 動態MoE架構實現架構差異分析表 二、訓練策略全面對比2.1 訓練數據工程對比2.2 分布式訓練代碼對比DeepSeek混合并行實現GPT-4 Megatron實現對比 2.3 關鍵訓練參數對比 三、性能表現多維評測3.1 基準測試全景對比3.2 推理…

基于hive的電信離線用戶的行為分析系統

標題:基于hive的電信離線用戶的行為分析系統 內容:1.摘要 隨著電信行業的快速發展,用戶行為數據呈現出海量、復雜的特點。為了深入了解用戶行為模式,提升電信服務質量和精準營銷能力,本研究旨在構建基于 Hive 的電信離線用戶行為分析系統。通…

Python使用alembic實現數據庫管理

python使用alembic實現數據庫管理 環境準備 安裝依賴: pip install sqlalchemy alembic項目結構 my_project/ ├── models.py # 定義數據模型 └── alembic/ # 遷移腳本目錄(自動生成) 使用步驟: 1. 初始化Alembic環境 …

對WebSocket做一點簡單的理解

1.概念 WebSocket 是基于 TCP 的一種新的網絡協議。它實現了瀏覽器與服務器全雙工通信——瀏覽器和服務器只需要完成一次握手,兩者之間就可以創建持久性的連接, 并進行雙向數據傳輸。 HTTP協議和WebSocket協議對比: HTTP是短連接 WebSocke…

kali虛擬機登錄頁面發癲 大寫鎖定輸入不了密碼

不知道怎么了 總是發癲 重啟切換太麻煩了 還有時候不成功 kali其實可以開啟虛擬鍵盤 如下 就解決的 發癲kali 發癲 發癲

基于Python的商品銷量的數據分析及推薦系統

一、研究背景及意義 1.1 研究背景 隨著電子商務的快速發展,商品銷售數據呈現爆炸式增長。這些數據中蘊含著消費者行為、市場趨勢、商品關聯等有價值的信息。然而,傳統的數據分析方法難以處理海量、多源的銷售數據,無法滿足現代電商的需求。…

內存泄漏出現的時機和原因,如何避免?

由于時間比較緊張我就不排版了,但是對于每一種可能的情況都會出對應的代碼示例以及解決方案代碼示例。 內存泄漏可能的原因之一在于用戶在動態分配一個內存空間之中,忘記將這部分內容手動釋放。例如:(c之中使用new分配內存沒有使…

PDF處理控件Aspose.PDF,如何實現企業級PDF處理

PDF處理為何成為開發者的“隱形雷區”? “手動調整200頁PDF目錄耗時3天,掃描件文字識別錯誤導致數據混亂,跨平臺渲染格式崩壞引發客戶投訴……” 作為開發者,你是否也在為PDF處理的復雜細節消耗大量精力?Aspose.PDF憑…

工程化與框架系列(27)--前端音視頻處理

前端音視頻處理 🎥 引言 前端音視頻處理是現代Web應用中的重要組成部分,涉及音頻播放、視頻處理、流媒體傳輸等多個方面。本文將深入探討前端音視頻處理的關鍵技術和最佳實踐,幫助開發者構建高質量的多媒體應用。 音視頻技術概述 前端音視…

2008-2024年中國手機基站數據/中國移動通信基站數據

2008-2024年中國手機基站數據/中國移動通信基站數據 1、時間:2008-2024年 2、來源:OpenCelliD 3、指標:網絡類型、網絡代數、移動國家/地區、移動網絡代碼、區域代碼、小區標識、單元標識、坐標經度、坐標緯度、覆蓋范圍、測量樣本數、坐標…

阿里云 ESA 游戲行業解決方案|安全防護、加速、低延時的技術融合

如今,游戲行業正處于蓬勃發展與深刻變革的關鍵時期。根據中國國際數字娛樂產業大會(CDEC)發布的《2024年 1-6 月中國游戲產業報告》顯示 2024 年上半年國內游戲市場實際銷售收入達 1472.67 億元,同比增長 2.08%,游戲用…

C# Unity 唐老獅 No.7 模擬面試題

本文章不作任何商業用途 僅作學習與交流 安利唐老獅與其他老師合作的網站,內有大量免費資源和優質付費資源,我入門就是看唐老師的課程 打好堅實的基礎非常非常重要: 全部 - 游習堂 - 唐老獅創立的游戲開發在線學習平臺 - Powered By EduSoho 如果你發現了文章內特殊的字體格式,…

electron + vue3 + vite 主進程到渲染進程的單向通信

用示例講解下主進程到渲染進程的單向通信 初始版本項目結構可參考項目:https://github.com/ylpxzx/electron-forge-project/tree/init_project 主進程到渲染進程(單向) 以Electron官方文檔給出的”主進程主動觸發動作,發送內容給渲…

【雜談】-因果性:開啟機器學習新紀元?

文章目錄 因果性:開啟機器學習新紀元?一、機器學習的現狀與局限二、因果性的定義與意義(一)日常生活中的因果性案例(二)相關性與因果性的區別 三、現有機器學習模型的困境與因果性的價值(一&…

【Python】omegaconf 用法詳解

OmegaConf:從基礎到進階 1. OmegaConf 簡介 OmegaConf 是 hydra 背后的核心配置庫,提供比 argparse 和 json.load 更靈活的配置管理能力。其主要特性包括: 安裝 OmegaConf: pip install omegaconf2. 基本操作 2.1 創建 OmegaC…

如何在 Windows 10 啟用卓越性能模式及不同電源計劃對比

在使用 powercfg -duplicatescheme 命令啟用 “卓越性能模式”(即 Ultimate Performance 模式)之前,有幾個前提條件需要注意: 前提條件: 系統版本要求:卓越性能模式 僅在 Windows 10 專業版 或更高版本&a…

請談談 HTTP 中的安全策略,如何防范常見的Web攻擊(如XSS、CSRF)?

一、Web安全核心防御機制 (一)XSS攻擊防御(跨站腳本攻擊) 1. 原理與分類 ?存儲型XSS:惡意腳本被持久化存儲在服務端(如數據庫)?反射型XSS:腳本通過URL參數或表單提交觸發執行?…

三、0-1搭建springboot+vue3前后端分離-idea新建springboot項目

一、ideal新建項目1 ideal新建項目2 至此父項目就創建好了,下面創建多模塊: 填好之后點擊create 不刪了,直接改包名,看自己喜歡 修改包名和啟動類名: 打開ServiceApplication啟動類,修改如下: …