1 使用docker镜像创建容器时同时启动服务
1.1 创建服务应用程序启动脚本
首先我们需要创建一个shell脚本用于启动我们的服务应用程序。
在某个目录下创建一个名为start_server.sh
的脚本,并在脚本内写服务启动命令,假设服务可执行程序为my_websocket_server
,则依次执行以下命令,
创建start_server.sh
# 创建文件
nano start_server.sh
在start_server.sh
写入启动服务命令
#!/bin/bash
/xxx/xxx/my_websocket_server -c /xxx/xxx/server.conf
exit 0
修改start_server.sh
权限,修改为可执行
chmod 777 ./start_server.sh
1.2 使用docker镜像创建容器时同时启动服务
在使用docker镜像创建容器时同时启动服务有两种方式,
- 一种是在使用docker run时后面直接执行1.1节中的服务脚本
- 另一种是将服务脚本加入到docker的开机启动中,在docker内部的系统启动时执行服务脚本
1.2.1 docker run执行服务脚本
假设docker镜像名为ubuntu:v3
,服务启动脚本在docker内部的路径为/usr/bin/start_server.sh
,则可以使用以下命令在启动容器时同时执行服务启动脚本
docker run -itd ubuntu:v3 -p 8080:8080 /usr/bin/start_server.sh
1.2.2 docker内部系统启动时执行服务脚本
使用docker镜像创建一个容器,其实就是一个开机的过程,所以要在docker镜像创建容器时同时启动服务其实就是将服务加入到开启启动中,在进行完这些操作之后,将当前容器再commit
为一个新的docker镜像保存,下一次在使用docker run
时docker内部就会自动执行服务脚本启动服务了。
Linux系统在启动时会加载以下配置文件:
- /etc/profile
- /root/.bash_profile
- /etc/bashrc
- /root/.bashrc
- /etc/profile.d/*.sh
- /etc/profile.d/lang.sh
- /etc/sysconfig/i18n
- /etc/rc.local(/etc/rc.d/rc.local)
所以在linux系统启动时运行一个shell脚本有很多种方法,比如
- 修改开机启动文件/etc/rc.d/rc.local文件,使用bash xxx.sh执行服务脚本
- 自定义服务文件,添加到系统服务,并通过Systemctl设置服务开机自启动
- 将写好的shell脚本放到目录 /etc/profile.d/下,系统启动后会自动执行该目录下的所有shell脚本
- 将写好的shell脚本放到目录/etc/init.d/或者/etc/rc.d/init.d/下,然后使用chkconfig命令设置
我们已经在1.1节中写好了服务的shell脚本,所以将该脚本直接复制或者移动到/etc/profile.d/目录下是最简单的添加服务开机启动的方式。
在/etc/rc.local或者/etc/rc.d/rc.local增加服务脚本执行命令
打开/etc/rc.local或者/etc/rc.d/rc.local,然后在exit前加入服务启动脚本代码
nano /etc/rc.d/rc.local
# 增加shell脚本执行代码
bash /xxx/xxx/start_server.sh
保存退出即可。
参考
本文作者:StubbornHuang
版权声明:本文为站长原创文章,如果转载请注明原文链接!
原文标题:Docker – docker内服务自启动,使用镜像创建容器时同时启动服务
原文链接:https://www.stubbornhuang.com/2800/
发布于:2023年09月11日 14:38:52
修改于:2023年09月11日 14:38:52
当前分类随机文章推荐
- nginx - 反向代理websocket服务 阅读28次,点赞0次
- Centos - 更换SSH端口 阅读3129次,点赞1次
- Centos7 - 防火墙操作以及开启和关闭特定端口 阅读4621次,点赞2次
- Centos7 - nohup方式优雅的部署jar包 阅读3400次,点赞0次
- Centos7 - 安装高版本的gcc/g++,多版本切换以及配置环境 阅读72次,点赞0次
- Docker - 容器操作入门指南 阅读53次,点赞0次
- Centos7 - frp内网穿透,访问内网web服务/访问内网websocket服务 阅读3301次,点赞1次
- Ubuntu - 查看CPU个数、核心数、总线程数 阅读69次,点赞1次
- Centos7 - 配置Go环境 阅读3078次,点赞1次
- Linux - 创建软链接、删除软链接、修改软链接 阅读47次,点赞0次
全站随机文章推荐
- Python - argparse命令行参数解析库用法总结 阅读965次,点赞0次
- C++ 回调函数 阅读3292次,点赞0次
- Python - 在子线程中使用OpenCV异步读取摄像头视频帧传递到主线程中进行处理 阅读2010次,点赞1次
- 资源分享 - Efficient Illumination Algorithms for Global Illumination In Interactive and Real-Time Rendering英文PDF下载 阅读2893次,点赞0次
- C++ - C++实现Python numpy的矩阵维度转置算法,例如(N,H,W,C)转换为(N,C,H,W) 阅读5060次,点赞4次
- 深度学习 - 图解Transformer,小白也能看懂的Transformer处理过程 阅读1070次,点赞0次
- TensorRT - 使用torch普通算子组合替代torch.einsum爱因斯坦求和约定算子的一般性方法 阅读3478次,点赞3次
- 如何获取CUDA版本号?CUDA Driver Version和CUDA Runtime Version的区别是什么? 阅读189次,点赞1次
- Duilib - 使Duilib主窗口前置,但是又不是一直作为最顶层窗口 阅读3364次,点赞2次
- 工具网站推荐 - 检查IP和端口是否被ban的工具网站 阅读1114次,点赞0次
评论
169