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

docker服务器运维

使用docker的目的:避免python环境被污染,也避免本项目的包版本影响其他服务。起到隔离的作用。
以python docker为例

目录结构:
your—project/
    |---- app/
        |---- main.py
        |---- requirements.txt
        |---- data/
        |---- logs/
    |---- deploy/
        |---- dockerfile

docker build时的目录
your—project/

目的制作新镜像,避免每次重复安装python package,持久化data和logs文件避免文件丢失国内的镜像建议在轩辕上下载

一、创建dockerfile
 

#从哪个镜像基础上制作新镜像 from your_image:tag1 #设置环境 ENV LOG_DIR=/app/logs ENV DATA_DIR=/app/data #设置python的源为阿里云 run pip config set global.index-url https://mirrors.aliyun.com/pypi/simple/ run pip config set install.trusted-host mirrors.aliyun.com #创建docker内的目录 run mkdir -p $DATA_DIR $LOG_DIR #切换工作目录 WORKDIR /app #声明持久化 VOLUME ["/app/data","/app/logs"]COPY ./app/ . COPY requirements.txt run pip install --no-cache-dir -r requirements.txt CMD ["python","main.py"]

 

二、制作镜像

docker build -t my_image_name:tag_version -f ./deploy/dockerfile .

 

执行完后,使用images命令显示已经创建好的镜像

docker imagesdocker rmi my_image_name:tag_version  #可以删除这个镜像docker rmi  id123 # ID的前3个字母 删除镜像

 

 

三、创建容器

docker build --name my_container_name --add-host=host.docker.internal:host-gateway -v ./app/data:/app/data -v ./app/logs:/app/logs my_images_name:tag_version

--name 是容器命名

也可以事后改名

docker rename old_container_name new_container_name

显示全部容器

docker ps -a

删除容器

docker rm my_contrainer_name

docker rm 容器的前3个id字母 

--add-host 的目的是为了在容器内访问 localhost的时候,能访问到宿主机

-v 是挂载目录   格式   宿主机目录:docker内目录。  避免文件丢失。实际文件存放位置是宿主机目录。docker容器删除后,文件仍然保存着。

 

四、docker的启动和使用

docker start my_container_name 

 

也可以在cron计划任务里启用

sudo crontab -e

0 2 * * MON-FRI docker start my_container_name

 

 

http://www.rkmt.cn/news/14240.html

相关文章:

  • Nginx 反向代理与负载均衡核心内容总结 - 实践
  • 完整教程:Clustering|聚类
  • 原核蛋白表达与真核蛋白表达的差异选择
  • SpringAI 实战:解除 Netty 超时难题,优化 OpenAiApi 配置
  • 广义串并联图とP6790 [SNOI2020] 生成树
  • 2025.9.30
  • Estun机器人数据断电保持问题解决方案
  • tomcat创建bat启动,结合任务计划实现自动重启tomcat服务 - 详解
  • US$47.5 B48 MSV90 ISN Reading via OBD Authorization for Yanhua Mini ACDP
  • Claude 4.5 刚刚发布,能连肝 30 多个小时,史上最卷 AI 诞生
  • 构建用户-物品-场景的“关系宇宙 - 教程
  • 基于SpringAI构建大模型应用
  • 【研发规范】Git 提交(commit)、CodeReview规范
  • 国企人力资源管理系统怎么选?内行人推荐这8款,功能、服务双保障
  • k8s使用的etcd空间清理
  • MyBatis 与 JPA 的核心对比
  • 完整教程:Redis 提供了两种主要的持久化机制:RDB 和 AOF
  • QMT回测模式为什么要在副图进行
  • 判断权限通过遍历二叉树路由删除权限不展示的前端组件
  • 开发即时通社交软件APP首选系统,可定制开发,可提供源码
  • springboot3 mybatis 数据库操控入门与实战
  • 解决winform调用wpf窗体时原窗体缩小的问题
  • Linux系统OOM终止Oracle进程
  • 实用指南:《C++进阶之C++11》【可变参数模板 + emplace接口 + 新的类功能】
  • BST(self saved)
  • jenkins 用户权限 管理配置
  • Windows系统Web UI自动化测试学习系列4--开源体系平台测试项目环境部署搭建
  • Node生态中最优雅的数据库事务处理机制
  • 详细介绍:扒透 STL 底层!map/set 如何封装红黑树?迭代器逻辑 + 键值限制全手撕----《Hello C++ Wrold!》(23)--(C/C++)
  • 跨网文件交换系统:数字化时代企业与机构的数据安全传输利器