首页 > 其他分享 >Docker容器内服务自启动解决方案

Docker容器内服务自启动解决方案

时间:2022-12-30 07:33:06浏览次数:46  
标签:容器 服务 解决方案 openresty 自启动 镜像 Docker docker

背景

在很多场景下,我们需要拉取或者是使用的别人的容器,但是有些容器内部的服务并不能自启动,比如Apache服务、mysql服务等等,对于数量较少的容器来讲,我们可以进入容器中使用命令将服务进行启动,但是如果是在一些像是CTF竞赛场景下,需要启动几十个或者是上百个docker容器,这个时候,如果容器内服务不能自启动,对于赛事运维运维人员来讲便是一场噩梦。那么怎么解决这个问题呢?

解决方案

我们来想一下,要解决服务不能自启这个问题,其实跟我们手动起执行命令启动容器原理差不多,只不过这个时候就不能我们手动起了,要给容器或者是镜像写一个shell,让它在容器启动的时候自动执行命令去启动服务。

实施(案例:以openresty为例)
1、先将容器保存为镜像

# 查看容器id及其状态
docker ps -a

# 若容器状态为running,需停止容器
docker stop <容器id> ---- docker stop 6ave5f37f835

# 将容器打包成镜像
docker commit <容器id> <镜像名>:<tag> ---- docker commit 6ave5f37f835 lamp:v1

# 查看保存下来的镜像
docker images

2、编写服务启动shell脚本(run.sh)

#!/bin/bash
/app/openresty/nginx/sbin/nginx

3、编写Dockerfile文件

FROM openresty:v1.21.4.1  # 在第一步保存下来的镜像
WORKDIR /app/openresty
ENTRYPOINT /app/openresty/startOpenresty.sh && tail -f /dev/null
MAINTAINER huangmanyao
RUN /bin/cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai' >/etc/timezone

4、重新构建openresty镜像

docker build -t openresty:latest .

5、使用重新构建的镜像启动容器

docker run -itd -p 8888:80 -p 2222:22 --restart=always openresty:latest 

6、查看openresty端口,正常情况下,服务是已经自启动了

标签:容器,服务,解决方案,openresty,自启动,镜像,Docker,docker
From: https://www.cnblogs.com/cherylgi/p/17013996.html

相关文章

  • docker的使用以及常用命令
    查看docker镜像仓库中是否存在某个镜像,通常第一个或stars最多的就是我们要是使用的,以nginx为例#搜索一下是否存在该镜像文件dockersearchnginx#安装使用该镜像dock......
  • Docker
    dockerrun过程dockerrun开始后现在本地查找镜像,如果有就以镜像为模板生产容器实例运行,如果没有就去DockerHub上查找该镜像,找得到就下载到本地,以镜像为模板生产容器实例运......
  • Docker 在线安装与离线安装
    在线安装参考的是Docker官方文档(现在应该没有“InstallonCentOS”了)。离线安装使用的包是学校教学发放的。Docker在线安装系统要求#CentOS7满足最低的内核要求......
  • Ubuntu18.04安装docker-compose
    下载compose下载链接:https://github.com/docker/compose上传到乌班图系统可以直接拖拽过去,放到/usr/local/bin/目录下修改包名mvdocker-compose-linux-x86_......
  • docker安装部署
    docker核心组件image镜像:构建容器(我们应用程序运行所需的环境,打包为镜像文件)。Container:容器(你的应用程序就跑在容器中)。镜像仓库(dockerhub):(保存镜像文件,提供上传,下载镜......
  • ubuntu 20.4安装docker
    ubuntu20.4安装docker目录查看版本并升级套件安装必要软件添加阿里云的GPG密钥,命令设置存储库执行安装,查看版本查看版本并升级套件cat/proc/versionLinux......
  • MongoDB从入门到实战之Docker快速安装MongoDB
    前言   在上一篇文章中带领带同学们快速入门MongoDB这个文档型的NoSQL数据库,让大家快速的了解了MongoDB的基本概念。这一章开始我们就开始实战篇教程,为了快速把Mong......
  • 基于微服务的解决方案的缺点
      基于微服务的解决方案有一些缺点: 分布式应用程序分布式应用程序增加了开发者在设计和生成服务时的难度。例如,开发者必须使用HTTP或AMPQ等协议实现服务间通......
  • Ubuntu Docker安装
    一步到胃https://blog.csdn.net/qq_44732146/article/details/121207737换源https://zhuanlan.zhihu.com/p/347643668重启systemctlrestartdocker查看配置docker......
  • docker安装mongodb
    dockerrun-d\--namemongodb\--restartalways\--privileged\-p27017:27017\-v/data/mongodb/data:/data/db\-eMONGO_INITDB_ROOT_USERNAME......