当前位置: 首页 > article >正文

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.lryc.cn/news/2384797.html

相关文章:

  • ## Docker 中 Elasticsearch 启动失败:日志文件权限问题排查与解决
  • 鸿蒙Flutter实战:23-混合开发详解-3-源码模式引入
  • leetcode:2469. 温度转换(python3解法,数学相关算法题)
  • 【软件安装】Windows操作系统中安装mongodb数据库和mongo-shell工具
  • 跨域问题及其CORS解决方案:gin框架中配置跨域
  • 记共享元素动画导致的内存泄露
  • Flyweight(享元)设计模式 软考 享元 和 代理属于结构型设计模式
  • Win/Linux安装flash attention2
  • 【原创】ubuntu22.04下载编译AOSP 15
  • 服务器网络配置 netplan一个网口配置两个ip(双ip、辅助ip、别名IP别名)
  • 响应面法(Response Surface Methodology ,RSM)
  • 针对面试-java集合篇
  • Spring Boot 拦截器:解锁5大实用场景
  • 展锐 Android 15 锁定某个App版本的实现
  • 有两个Python脚本都在虚拟环境下运行,怎么打包成一个系统服务,按照顺序启动?
  • 【Linux cmd】查找进程信息
  • 与网格共舞 - 服务网格的运维与问题排查 (Istio 实例)
  • Python 脚本执行命令的深度探索:方法、示例与最佳实践
  • PotPlayer 4K 本地万能影音播放器
  • 2025年电工杯A题第一版本Q1-Q4详细思路求解+代码运行
  • 基于阿里云DashScope API构建智能对话指南
  • HOW - 基于组件库组件改造成自定义组件基本规范
  • 九州未来十三载:开源赋能 智启未来
  • 2025年AI搜索引擎发展洞察:技术革新与市场变革
  • dify调用Streamable HTTP MCP应用
  • HCIP实验五
  • java将图片转Base64字符串存储mysql数据库
  • 题目 3330: 蓝桥杯2025年第十六届省赛真题-01 串
  • 初识 Flask 框架
  • MYSQL故障排查和环境优化