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

docker使用sh脚本创建容器,保持容器正常运行,异常关闭后马上重启

docker run -d --name dadeName \--memory=5120m \-p 40060:80 \-p 40061:3306 \-v "$data:$dockerData" \-v "$img:$dockerImg" \--restart=always \  # 关键参数:总是重启dade:120 \/bin/bash -c "/www/start.sh && tail -f /dev/null"

–restart=always:无论容器因何原因停止(手动停止、异常退出等),Docker 都会自动重启它。
–restart=unless-stopped:除非手动停止容器,否则 Docker 会在容器退出时自动重启。
–restart=on-failure[:max-retries]:仅在容器以非零状态码退出时重启,可指定最大重试次数(如 on-failure:5)。

第一次创建,初始化挂载目录

#!/bin/bash# 容器内目录
dockerData="/usr/local/mysql/data"
dockerImg="/www/python/static/img"
# 挂载主机目录
data="/home/dockerV/dade01_data"
img="/home/dockerV/dade01_img"# 第一次创建使用,后面的就不用了
# 创建宿主机目标目录,不存在创建
mkdir -p $data
mkdir -p $img
# 需要去容器先拷贝一份出来
cp -r /home/dockerV/mysql/* $data/
# sleep 3
# mysql数据库data目前权限,里面是dade权限,主机也要给一样的权限,不然mysql无法运行
sudo chown -R dade:dade $data# 启动容器,创建容,memory限制容器内存大小5g,dade:120是那个容器版本,:rw表示读写,:ro是只读,不写(rw,ro默认读写)
docker run -d --name dadeName --memory=5120m -p 40060:80 -p 40061:3306 -v $data:$dockerData -v $img:$dockerImg --restart=unless-stopped dade:120 /bin/bash -c "/www/start.sh && tail -f /dev/null"

-d后台运行

/www/start.sh启动执行脚本

&& tail -f /dev/null 的作用
&& tail -f /dev/null 是一个在容器中常用的技巧,用于保持主进程运行,防止容器因主命令执行完毕而退出
性能影响:tail -f /dev/null 几乎不消耗 CPU 资源,比 sleep infinity 更高效。

或者,启动容器拷贝出来

#!/bin/bash# 容器内目录
dockerData="/usr/local/mysql/data"
dockerImg="/www/python/static/img"
# 挂载主机目录
data="/home/dockerV/dade01_data"
img="/home/dockerV/dade01_img"# 第一次创建使用,后面的就不用了
# 创建宿主机目标目录,不存在创建
mkdir -p $data
mkdir -p $img
# 如果提前有拷贝出来
# cp -r /home/dockerV/mysql/* $data/
# 启动容器复制
docker run -d --name dadeNameCp dade:120 /bin/bash -c "tail -f /dev/null"
sleep 2
# 需要去容器先拷贝一份出来,不知道为什么一直复制带了data目录一起复制过来
# docker cp "dadeNameCp:$dockerData/" "$data/"# 或者使用方法二,在里面压缩,在复制就不会了
docker exec dadeNameCp tar -C "$dockerData" -c . | tar -C "$data" -x# mysql数据库data目前权限,里面是dade权限,主机也要给一样的权限,不然mysql无法运行
sudo chown -R dade:dade $data
# 停止并删除容器
docker stop dadeNameCp
docker rm dadeNameCp# 启动容器,创建容,memory限制容器内存大小5g,dade:120是那个容器版本,:rw表示读写,:ro是只读,不写(rw,ro默认读写)
docker run -d --name dadeName --memory=5120m -p 40060:80 -p 40061:3306 -v $data:$dockerData -v $img:$dockerImg --restart=unless-stopped dade:120 /bin/bash -c "/www/start.sh && tail -f /dev/null"
http://www.lqws.cn/news/81217.html

相关文章:

  • 23. Merge k Sorted Lists
  • #16 学习日志软件测试
  • 并查集(上)
  • DAY 40 超大力王爱学Python
  • 【多线程初阶】内存可见性问题 volatile
  • Java线程生命周期详解
  • Promise与Async/Await:现代JavaScript异步编程的利器
  • 高效使用Map的“新”方法
  • 模块二:C++核心能力进阶(5篇)篇二:《多线程编程:C++线程池与原子操作实战》(14万字深度指南)
  • openai-java
  • Java详解LeetCode 热题 100(23):LeetCode 206. 反转链表(Reverse Linked List)详解
  • 做好 4个基本动作,拦住性能优化改坏原功能的bug
  • ps色彩平衡调整
  • github 提交失败,连接不上
  • 数值与字典解决方案二十七讲:两列数据相互去掉重复值后合并
  • 【Java Web】速通Tomcat
  • 【性能调优系列】深入解析火焰图:从基础阅读到性能优化实战
  • 导入典籍数据
  • Docker 镜像原理
  • React 核心概念与生态系统
  • js的时间循环的讲解
  • sqlite-vec:谁说SQLite不是向量数据库?
  • 题目 3225: 蓝桥杯2024年第十五届省赛真题-回文字符串
  • 光伏功率预测 | LSTM多变量单步光伏功率预测(Matlab完整源码和数据)
  • 机器视觉图像处理之图像滤波
  • 从多巴胺的诱惑到内啡肽的力量 | 个体成长代际教育的成瘾困局与破局之道
  • Python----目标检测(《YOLO9000: Better, Faster, Stronger》和YOLO-V2的原理与网络结构)
  • 蓝云APP:云端存储,便捷管理
  • Linux入门(十三)动态监控系统监控网络状态
  • (Python网络爬虫);抓取B站404页面小漫画