Docker 掛載卷并保存為容器

1 創建docker容器

使用鏡像osrf/ros:humble-desktop-full-jammy創建并運行容器

sudo docker run -it --name ros2_humble??osrf/ros:humble-desktop-full-jammy /ros_entrypoint.sh bash

docker run -it -v d:\docker\ros2_humble:/root/ros2_ws osrf/ros:humble-desktop-full-jammy /ros_entrypoint.sh bash

Docker ps -a

Docker start ros2_humble_test

docker exec -it ros2_humble_test /bin/bash

docker cp hello.c ros2_humble_test:/communication/src/timestamp/src/hello.c

2 拷貝文件到 docker 容器

3 vscode 編輯docker 中文件

4 x11 掛接docker

5 docker 掛接數據

docker run -d -v /local/path:/container/path <image_name>

6 Maboxterm 連接docker 容器

apt update && apt install -y net-tools

service ssh status

netstat -tuln | grep 22

7 掛載一個卷

docker run -it -v d:\docker\ros2_humble:/communication/src/timestamp --name ros2_humble?osrf/ros:humble-desktop-full-jammy /ros_entrypoint.sh bash

cd ~/communication/src
ros2 pkg create --build-type ament_cmake --license Apache-2.0 my_cpp_package --dependencies rclcpp std_msgs

在 Docker 中,你可以將運行中的容器保存為一個新的鏡像,以便后續可以基于這個鏡像快速創建新的容器。這個過程通常使用 docker commit 命令來完成。
使用 docker commit 保存容器為鏡像

docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
CONTAINER:要保存的容器的名稱或 ID。
REPOSITORY:目標鏡像的倉庫名稱(可選)。
TAG:目標鏡像的標簽(可選,默認為 latest)。
示例
假設你有一個正在運行的容器,名稱為 ros2_humble,你可以使用以下命令將其保存為一個新的鏡像:

docker commit ros2_humble my_ros2_humble_image
ros2_humble 是容器的名稱。
my_ros2_humble_image 是新鏡像的名稱。
如果你想為鏡像指定一個標簽,可以使用以下命令:

docker commit ros2_humble my_ros2_humble_image:v1
my_ros2_humble_image:v1 表示鏡像名稱為 my_ros2_humble_image,標簽為 v1。
高級選項
docker commit 還支持一些高級選項,例如設置作者信息、配置容器的運行參數等。


docker commit --author "Your Name <your.email@example.com>" ros2_humble my_ros2_humble_image:v1
配置容器的運行參數
你可以通過 --change 選項來配置容器的運行參數,例如設置默認的命令或環境變量。例如:

docker commit --change "CMD [\"/ros_entrypoint.sh\", \"bash\"]" ros2_humble my_ros2_humble_image:v1
示例:保存并運行新的鏡像
保存容器為鏡像:

docker commit ros2_humble my_ros2_humble_image:v1
查看新鏡像:

docker images
你應該會看到 my_ros2_humble_image:v1 出現在鏡像列表中。
基于新鏡像運行容器:

docker run -it --name new_ros2_humble my_ros2_humble_image:v1 /ros_entrypoint.sh bash
注意事項
鏡像大小:
使用 docker commit 創建的鏡像會包含容器的所有更改,包括文件系統的變化和運行時的狀態。因此,生成的鏡像可能會比原始鏡像大很多。
如果你希望生成更輕量的鏡像,建議使用 Dockerfile。
鏡像的可移植性:
docker commit 創建的鏡像僅包含當前容器的狀態,不包含構建過程中的上下文信息(如 Dockerfile 中的指令)。因此,這種鏡像在其他環境中可能不如通過 Dockerfile 構建的鏡像靈活。
鏡像的版本管理:
建議為鏡像添加版本標簽(如 v1、v2 等),以便更好地管理不同版本的鏡像。
總結
docker commit 是一個非常方便的工具,可以快速將運行中的容器保存為一個新的鏡像。然而,為了更好地管理鏡像和確保可移植性,建議在可能的情況下使用 Dockerfile 來構建鏡像。如果你只是需要快速保存當前容器的狀態,docker commit 是一個不錯的選擇。

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

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

相關文章

無人機飛手共享接單平臺

2025年&#xff0c;無人機已不再是“黑科技”的代名詞。從農田噴灑到外賣配送&#xff0c;從航拍攝影到醫療急救&#xff0c;無人機正以驚人的速度滲透我們的生活。而在這場變革中&#xff0c; “無人機飛手共享接單平臺” 成為連接技術與需求的核心樞紐。它不僅讓專業飛手輕松…

【Web應用】若依框架:基礎篇07功能詳解-定時任務

文章目錄 ?前言?一、講解過程?二、動手實操?總結 標題詳情作者JosieBook頭銜CSDN博客專家資格、阿里云社區專家博主、軟件設計工程師博客內容開源、框架、軟件工程、全棧&#xff08;,NET/Java/Python/C&#xff09;、數據庫、操作系統、大數據、人工智能、工控、網絡、程序…

8.8 Primary ODSA service without ODSA Portal

主要ODSA服務&#xff08;不使用ODSA門戶&#xff09; 以下場景描述如下情況&#xff1a; ? 主ODSA客戶端應用程序被允許用于該類型的主設備&#xff0c;且對終端用戶啟用&#xff08;已授權&#xff09;。 ? 服務提供商&#xff08;SP&#xff09;能夠在不涉及ODSA門戶Web服…

深度檢測與動態透明度控制 - 基于Babylon.js的遮擋檢測實現解析

首先貼出實現代碼&#xff1a; OcclusionFader.ts import { AbstractEngine, Material, type Behavior, type Mesh, type PBRMetallicRoughnessMaterial, type Scene } from "babylonjs/core"; import { OcclusionTester } from "../../OcclusionTester"…

openssl 使用生成key pem

好的&#xff0c;以下是完整的步驟&#xff0c;幫助你在 Windows 系統中使用 OpenSSL 生成私鑰&#xff08;key&#xff09;和 PEM 文件。假設你的 openssl.cnf 配置文件位于桌面。 步驟 1&#xff1a;打開命令提示符 按 Win R 鍵&#xff0c;打開“運行”對話框。輸入 cmd&…

音視頻之視頻壓縮及數字視頻基礎概念

系列文章&#xff1a; 1、音視頻之視頻壓縮技術及數字視頻綜述 一、視頻壓縮編碼技術綜述&#xff1a; 1、信息化與視頻通信&#xff1a; 什么是信息&#xff1a; 眾所周知&#xff0c;人類社會的三大支柱是物質、能量和信息。具體而言&#xff0c;農業現代化的支柱是物質&…

傳統數據表設計與Prompt驅動設計的范式對比:以NBA投籃數據表為例

引言&#xff1a;數據表設計方法的演進 在數據庫設計領域&#xff0c;傳統的數據表設計方法與新興的Prompt驅動設計方法代表了兩種截然不同的思維方式。本文將以NBA賽季投籃數據表(shots)的設計為例&#xff0c;深入探討這兩種方法的差異、優劣及適用場景。隨著AI技術在數據領…

XCTF-web-mfw

發現了git 使用GitHack下載一下源文件&#xff0c;找到了php源代碼 <?phpif (isset($_GET[page])) {$page $_GET[page]; } else {$page "home"; }$file "templates/" . $page . ".php";// I heard .. is dangerous! assert("strpos…

Prompt Tuning與自然語言微調對比解析

Prompt Tuning 與輸入提示詞自然語言微調的區別和聯系 一、核心定義與區別 維度Prompt Tuning(提示微調)輸入提示詞自然語言微調本質優化連續向量空間中的提示嵌入(不可直接閱讀)優化離散自然語言文本(人類可理解)操作對象模型輸入嵌入層的連續向量(如WordEmbedding)自…

LVS的DR模式部署

目錄 一、引言&#xff1a;高并發場景下的流量調度方案 二、LVS-DR 集群核心原理與架構設計 &#xff08;一&#xff09;工作原理與數據流向 數據包流向步驟3&#xff1a; &#xff08;二&#xff09;模式特性與53網絡要求 三、實戰配置&#xff1a;從9環境搭建到參數調整…

8種常見數據結構及其特點簡介

一、8種常見數據結構 1. 數組&#xff08;Array&#xff09; 簡介&#xff1a;數組是有序元素的序列&#xff0c;連續內存塊存儲相同類型元素&#xff0c;通過下標直接訪問。數組會為存儲的元素都分配一個下標&#xff08;索引&#xff09;&#xff0c;此下標是一個自增連續的…

通過mailto:實現web/html郵件模板喚起新建郵件并填寫內容

一、背景 在實現網站、html郵件模板過程中&#xff0c;難免會遇到需要通過郵箱向服務提供方發起技術支持等需求&#xff0c;因此&#xff0c;我們需要通過一個功能&#xff0c;能新建郵件并提供模板&#xff0c;提高溝通效率 二、mailto協議配置說明 參數描述mailto:nameema…

好用但不常用的Git配置

參考文章 文章目錄 tag標簽分支新倉庫默認分支推送 代碼合并沖突處理默認diff算法 tag標簽 默認是以字母順序排序&#xff0c;這會導致一些問題&#xff0c;比如0.5.101排在0.5.1000之后。為了解決這個問題&#xff0c;我們可以把默認排序改為數值排序 git config --global t…

第六十八篇 從“超市收銀系統崩潰”看JVM性能監控與故障定位實戰

目錄 引言&#xff1a;當技術問題遇上生活場景一、JVM的“超市貨架管理哲學”二、收銀員工具箱&#xff1a;JVM監控三板斧三、典型故障診斷實錄四、防患于未然的運維智慧五、結語&#xff1a;從故障救火到體系化防控 引言&#xff1a;當技術問題遇上生活場景 想象一個周末的傍…

tauri2項目打開某個文件夾,類似于mac系統中的 open ./

在 Tauri 2 項目中打開文件夾 在 Tauri 2 項目中&#xff0c;你可以使用以下幾種方法來打開文件夾&#xff0c;類似于 macOS 中的 open ./ 命令功能&#xff1a; 方法一&#xff1a;使用 shell 命令 use tauri::Manager;#[tauri::command] async fn open_folder(path: Strin…

編譯pg_duckdb步驟

1. 要求cmake的版本要高于3.17&#xff0c;可以通過下載最新的cmake的程序&#xff0c;然后設置.bash_profile的PATH環境變量&#xff0c;將最新的cmake的bin目錄放到PATH環境變量的最前面 2. g的版本要支持c17標準&#xff0c;否則會報 error ‘invoke_result in namespace ‘…

GO 語言中變量的聲明

Go 語言變量名由字母、數字、下劃線組成&#xff0c;其中首個字符不能為數字。Go 語言中關鍵字和保留字都不能用作變量名。Go 語言中的變量需要聲明后才能使用&#xff0c;同一作用域內不支持重復聲明。 并且 Go 語言的變量聲明后必須使用。 1. var 聲明變量 在 Go 語言中&…

windows和mac安裝虛擬機-詳細教程

簡介 虛擬機&#xff1a;Virtual Machine&#xff0c;虛擬化技術的一種&#xff0c;通過軟件模擬的、具有完整硬件功能的、運行在一個完全隔離的環境中的計算機。 在學習linux系統的時候&#xff0c;需要安裝虛擬機&#xff0c;在虛擬機上來運行操作系統&#xff0c;因為我使…

XCTF-web-Cat

嘗試輸入127.0.0.1 嘗試127.0.0.1;ls 試了很多&#xff0c;都錯誤&#xff0c;嘗試在url里直接輸入&#xff0c;最后發現輸入%8f報錯 發現了Django和DEBUG 根據Django的目錄&#xff0c;我們使用進行文件傳遞 嘗試?url/opt/api/database.sqlite3&#xff0c;找到了flag

C#、C++、Java、Python 選擇哪個好

選擇哪種語言取決于具體需求&#xff1a;若關注性能和底層控制選C、若開發企業級應用選Java、若偏好快速開發和豐富生態選Python、若構建Windows生態應用選C#。 以Python為例&#xff0c;它因語法簡潔、開發效率高、應用廣泛而在AI、數據分析、Web開發等領域大放異彩。根據TIOB…