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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈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的倍数。 输入描述&#…