麻花痒 发表于 3 天前

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 CONTAINER ]
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 是一个不错的选择。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: Docker 挂载卷并保存为容器