docker初學

加載鏡像:docker load -i ubuntu.tar

導出鏡像:docker save -o ubuntu1.tar ubuntu

運行:

docker run -it --name mu ubuntu /bin/bash

ocker run -dit --name mmus docker.1ms.run/library/ubuntu /bin/bash

進入容器:docker exec -it mmus /bin/bash

docker exec -it ubun bash

docker exec -it <container_name> /root/start_flask.sh

停止:docker stop mmus

將容器打包成一個新的鏡像資源:

docker commit mu(容器名) ubuntusss(資源名)

強制刪除:?docker rmi -f paddlex

構建鏡像:docker build -t 名稱 .

有GPU的運行:

docker run -it --gpus all nvidia/cuda:11.8.0-base-ubuntu22.04 bash

docker run -it --gpus all --name ubun nvidia/cuda:11.8.0-cudnn8-devel-ubuntu22.04 /bin/bash

?docker run -it --gpus all --network my_custom_network -p 27000:27000 --shm-size=32g --name ubuntu2 -v my_volume:/root/Code -v /home2/aitp:/root/aitp --user root ubuntu_conda tail -f /dev/null /bin/bash

docker拷貝文件:docker cp Anaconda3-2023.03-Linux-x86_64.sh ubun(容器名):/

重啟容器:docker restart?

端口映射:docker run -dit -p --name my111 ngnix

自啟動:

是的,使用 rc.local 可以在 Docker 容器啟動時自動運行 Flask 服務并激活 Anaconda 虛擬環境。具體來說,您需要在 rc.local 文件中啟動 Docker 容器后,進入該容器并執行啟動 Flask 服務的命令,同時確保激活正確的 Anaconda 虛擬環境。

下面是一個詳細的步驟來實現這一目標:

1. 在 Docker 容器中啟動 Flask 服務并激活 Anaconda 環境

首先,確保您在容器內可以正常啟動 Flask 服務并激活虛擬環境。以下是容器內的步驟:

1.1. 創建啟動腳本

你需要創建一個啟動腳本來激活 Anaconda 環境并啟動 Flask 服務。假設虛擬環境的名稱為 paddlex_env,Flask 服務的啟動腳本是 /root/Code/PaddleX/paddlex_restful/command.py

  • 創建啟動腳本 start_flask.sh(可以放在容器中的某個目錄,或直接放在 /root/ 目錄下):

     

    bash

    #!/bin/bash
    # 激活 Anaconda 環境
    source /root/anaconda3/bin/activate paddlex_env# 啟動 Flask 服務
    python /root/Code/PaddleX/paddlex_restful/command.py
    
  • 給這個腳本賦予可執行權限:

     

    bash

    chmod +x /root/start_flask.sh
    
1.2. 測試容器內的腳本

確保可以在容器內運行這個腳本,激活虛擬環境并啟動 Flask 服務:

 

bash

docker exec -it <container_name> /root/start_flask.sh

如果一切正常,Flask 服務應當能夠成功啟動。


2. 配置 rc.local 來自動啟動容器和服務

接下來,配置 rc.local 來確保在啟動時自動啟動容器,并執行啟動腳本來啟動 Flask 服務。

2.1. 編輯 rc.local 文件
  1. 打開 rc.local 文件:

     

    bash

    sudo nano /etc/rc.local
    
  2. rc.local 文件中添加命令

    • 假設容器名為?paddlex_container,你需要在?rc.local?中加入以下命令:
     

    bash

    #!/bin/bash
    # 啟動 Docker 容器
    docker start paddlex_container || docker run -d --name paddlex_container <image_name># 在容器內運行 start_flask.sh 腳本啟動 Flask 服務
    docker exec -d paddlex_container /root/start_flask.shexit 0
    
    • docker start paddlex_container:嘗試啟動現有的容器。
    • docker run -d --name paddlex_container <image_name>:如果容器不存在,則創建并啟動新容器。
    • docker exec -d paddlex_container /root/start_flask.sh:在容器中執行啟動 Flask 服務的腳本。

    記得替換 <image_name> 為你的 Docker 鏡像名稱。

2.2. 設置 rc.local 可執行權限

確保 rc.local 文件具有執行權限:

 

bash

sudo chmod +x /etc/rc.local
2.3. 啟用并啟動 rc.local 服務
  1. 啟用 rc.local 服務(如果你的系統使用 systemd):

     

    bash

    sudo systemctl daemon-reload
    sudo systemctl enable rc-local
    sudo systemctl start rc-local
    
  2. 檢查 rc-local 服務狀態

     

    bash

    sudo systemctl status rc-local
    

3. 測試和調試

  • 重啟系統,檢查容器是否能自動啟動并運行 Flask 服務:

     

    bash

    sudo reboot
    
  • 檢查容器狀態,確保容器啟動并正常運行 Flask 服務:

     

    bash

    docker ps
    
  • 如果有任何問題,可以通過以下命令檢查容器日志:

     

    bash

    docker logs paddlex_container
    

4. 優化

  • 日志記錄:為了便于調試,建議將啟動腳本的輸出記錄到日志文件中,例如:

     

    bash

    #!/bin/bash
    # 激活 Anaconda 環境并啟動 Flask 服務,將日志輸出到文件
    source /root/anaconda3/bin/activate paddlex_env
    python /root/Code/PaddleX/paddlex_restful/command.py >> /root/flask_service.log 2>&1
    
  • 容器自啟動:如果希望容器在系統重啟時自動啟動,可以在 Docker 容器運行時使用 --restart 選項,例如:

     

    bash

    docker run -d --restart=unless-stopped --name paddlex_container <image_name>
    

總結:

  • 使用?rc.local?可以實現 Docker 容器自啟動,并且在啟動時自動激活 Anaconda 環境和運行 Flask 服務。
  • 配置?rc.local?啟動 Docker 容器并在容器內運行啟動腳本來啟動 Flask 服務。
  • 測試和調試啟動過程,確保服務在系統重啟后能夠正確運行。

如果在配置過程中遇到任何問題,可以隨時提問!

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

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

相關文章

Docker系列(二):開機自啟動與基礎配置、鏡像加速器優化與疑難排查指南

引言 docker 的快速部署與高效運行依賴于兩大核心環節&#xff1a;基礎環境搭建與鏡像生態優化。本期博文從零開始&#xff0c;系統講解 docker 服務的管理配置與鏡像加速實踐。第一部分聚焦 docker 服務的安裝、權限控制與自啟動設置&#xff0c;確保環境穩定可用&#xff1b…

計算機視覺(圖像算法工程師)學習路線

計算機視覺學習路線 Python基礎 常量與變量 列表、元組、字典、集合 運算符 循環 條件控制語句 函數 面向對象與類 包與模塊Numpy Pandas Matplotlib numpy機器學習 回歸問題 線性回歸 Lasso回歸 Ridge回歸 多項式回歸 決策樹回歸 AdaBoost GBDT 隨機森林回歸 分類問題 邏輯…

工業軟件國產化:構建自主創新生態,賦能制造強國建設

隨著全球產業環境的變化和技術的發展&#xff0c;建立自主可控的工業體系成為我國工業轉型升級、走新型工業化道路、推動國家制造業競爭水平提升的重要抓手。 市場倒逼與政策護航&#xff0c;國產化進程雙輪驅動 據中商產業研究院預測&#xff0c;2025年中國工業軟件市場規模…

OpenCV CUDA 模塊圖像過濾------創建一個高斯濾波器函數createGaussianFilter()

操作系統&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 編程語言&#xff1a;C11 算法描述 cv::cuda::createGaussianFilter 是 OpenCV CUDA 模塊中的一個工廠函數&#xff0c;用于創建一個高斯濾波器。這個濾波器可以用來平滑圖像&#…

【RocketMQ 生產者和消費者】- 生產者發送故障延時策略

文章目錄 1. 前言2. FaultItem3. LatencyFaultToleranceImpl 容錯集合處理類3.1 updateFaultItem 更新容錯集合3.2 isAvailable 判斷 broker 是否可用3.3 pickOneAtLeast 至少選出一個故障 broker 4. MQFaultStrategy 故障策略類4.1 屬性4.2 updateFaultItem 更新延遲故障容錯信…

【HarmonyOS 5】Map Kit 地圖服務之應用內地圖加載

#HarmonyOS SDK應用服務&#xff0c;#Map Kit&#xff0c;#應用內地圖 目錄 前期準備 AGC 平臺創建項目并創建APP ID 生成調試證書 生成應用證書 p12 與簽名文件 csr 獲取 cer 數字證書文件 獲取 p7b 證書文件 配置項目簽名 項目開發 配置Client ID 開通地圖服務 配…

(1-6-1)Java 集合

目錄 0.知識概述&#xff1a; 1.集合 1.1 集合繼承關系類圖 1.2 集合遍歷的三種方式 1.3 集合排序 1.3.1 Collections實現 1.3.2 自定義排序類 2 List 集合概述 2.1 ArrayList &#xff08;1&#xff09;特點 &#xff08;2&#xff09;常用方法 2.2 LinkedList 3…

Vue.extend

Vue.extend 是 Vue 2 中的一個重要 API&#xff0c;用于基于一個組件配置對象創建一個“可復用的組件構造函數”。它是 Vue 內部構建組件的底層機制之一&#xff0c;適用于某些高級用法&#xff0c;比如手動掛載組件、彈窗動態渲染等。 ?? 在 Vue 3 中已被移除&#xff0c;V…

【MySQL系列】SQL 分組統計與排序

博客目錄 引言一、基礎語法解析二、GROUP BY 的底層原理三、ORDER BY 的排序機制四、NULL 值的處理策略五、性能優化建議六、高級變體查詢 引言 在現代數據分析和數據庫管理中&#xff0c;分組統計是最基礎也是最核心的操作之一。無論是業務報表生成、用戶行為分析還是系統性能…

spring中的InstantiationAwareBeanPostProcessor接口詳解

一、接口定位與核心功能 InstantiationAwareBeanPostProcessor是Spring框架中擴展Bean生命周期的關鍵接口&#xff0c;繼承自BeanPostProcessor。它專注于Bean的實例化階段&#xff08;對象創建和屬性注入&#xff09;的干預&#xff0c;而非父接口的初始化階段&#xff08;如…

uniapp使用sse連接后端,接收后端推過來的消息(app不支持!!)

小白終成大白 文章目錄 小白終成大白前言一、什么是SSE呢&#xff1f;和websocket的異同點有什么&#xff1f;相同點不同點 二、直接上實現代碼總結 前言 一般的請求就是前端發 后端回復 你一下我一下 如果需要有什么實時性的 后端可以主動告訴前端的技術 我首先會想到 webso…

QML學習06Button

QMLx學習06Button 1、Button1.1 狀態改變&#xff08;checkable&#xff09;1.2 排斥性&#xff08;autoExclusive&#xff09;1.3 重復觸發&#xff08;autoRepeat&#xff09;、第一次觸發延時時間&#xff08;autoRepeatDelay&#xff09;、相互之間觸發的時間間隔&#xff…

什么是前端工程化?它有什么意義

前端工程化是指通過工具、流程和規范,將前端開發從手工化、碎片化的模式轉變為系統化、自動化和標準化的生產過程。其核心目標是 提升開發效率、保障代碼質量、增強項目可維護性,并適應現代復雜 Web 應用的需求。 一、前端工程化的核心內容 1. 模塊化開發 代碼模塊化:使用 …

校園二手交易系統

該交易平臺分為兩部分&#xff0c;前臺和后臺。用戶在前臺進行商品選購以及交易&#xff1b;管理員登錄后臺可以對商品進行維護&#xff0c;主要功能包含&#xff1a; 后臺系統的主要功能模塊如下&#xff1a; 登錄功能、注冊功能、后臺首頁 系統設置&#xff1a; 菜單管理、…

06-Web后端基礎(java操作數據庫)

1. 前言 在前面我們學習MySQL數據庫時&#xff0c;都是利用圖形化客戶端工具(如&#xff1a;idea、datagrip)&#xff0c;來操作數據庫的。 我們做為后端程序開發人員&#xff0c;通常會使用Java程序來完成對數據庫的操作。Java程序操作數據庫的技術呢&#xff0c;有很多啊&a…

uni-app學習筆記十三-vue3中slot插槽的使用

在頁面開發中&#xff0c;通常一個頁面分為頭部&#xff0c;尾部&#xff0c;和中心內容區。其中頭部&#xff0c;尾部一般比較固定&#xff0c;而中心區域往往是多樣的&#xff0c;需要自定義開發。此時&#xff0c;我們可以引入slot(插槽)來實現這一目標。<slot> 作為一…

Agent模型微調

這篇文章講解&#xff1a; 把 Agent 和 Fine-Tuning 的知識串起來&#xff0c;在更高的技術視角看大模型應用&#xff1b;加深對 Agent 工作原理的理解&#xff1b;加深對 Fine-Tuning 訓練數據處理的理解。 1. 認識大模型 Agent 1.1 大模型 Agent 的應用場景 揭秘Agent核心…

【最新版】Arduino IDE的安裝入門Demo

1、背景說明 1、本教程編寫日期為2025-5-24 2、Arduino IDE的版本為&#xff1a;Arduino IDE 2.3.6 3、使用的Arduino為Arduino Uno 1、ArduinoIDE的安裝 1、下載。網址如下&#xff1a;官網 2、然后一路安裝即可。 期間會默認安裝相關驅動&#xff0c;默認安裝即可。 3、安…

Python應用運算符初解

大家好!運算符是編程中不可或缺的工具&#xff0c;它們能幫助我們執行各種計算和操作。無論是數學運算&#xff0c;還是變量賦值&#xff0c;運算符都在背后默默發揮作用。對于編程初學者來說&#xff0c;理解并掌握常見運算符的用法是邁向編程世界的重要一步。 算術運算符: 加…

小米2025年校招筆試真題手撕(二)

一、題目 給一個長度為n的序列和一個整數x&#xff0c;每次操作可以選擇序列中的一個元素&#xff0c;將其從序列中刪去&#xff0c;或者將其值加一。 問至少操作多少次&#xff0c;可以使操作后的序列&#xff08;可以為空&#xff09;中數字之和是x的倍數。 輸入描述&#…