使用docker运行带有nginx服务的容器。容器启动后,每次都需要手动进入容器内启动nginx服务。修改容器,让nginx服务随容器自动启动。
- 使用原nginx-sj: latest镜像文件运行一个容器
nginx-sj: latest 是我之前使用,已修改的官方nginx镜像文件。
- 查看用户目录下.bashrc文件
- 直接将服务启动命名写入.bashrc文件,见下
- 编辑一个start_nginx.sh文件
- 写入以下内容,并保存
- 添加start_nginx.sh脚本执行权限
- 将启动脚本写入.bashrc文件
- 将当前容器(4eba3)导出成文件nginx-sj_.tar
- 删除当前容器(4eba3)
- 删除旧nginx-sj:latest镜像
- 导入创建新nginx-sj: latest镜像,新镜像ID:283bb24f8ff4
- 启动容器,宿主机发布端口:9090,容器内服务端口:80
- 宿主机已监听端口9090
- 宿主机IP 10.211.55.10
- 访问宿主机HTTP://10.211.55.10:9090,成功!
修改镜像默认值,方式详见官方文档:Overriding image defaults
- 修改镜像Cmd默认值(之前是null)
- nginx -g “daemon off;”
- 提交生成新镜像:nginx-sj:1
- 查看新镜像nginx-sj:1信息
- “Cmd”: [ “nginx”, “-g”, “daemon off;” ],
- 运行容器进行验证
- 宿主机已经监听9000端口–>容器内nginx服务80端口
- 外部访问HTTP://10.211.55.10:9000,成功。
- 修改镜像默认值,也可以组合修改ENTRYPOINT 和 CMD。修改方式如下:
ENTRYPOINT 与 CMD 关系及使用方式详见官方文档:Understand how CMD and ENTRYPOINT interact
- 生存新镜像方式同方案三
说明:因为docker run 命令中–entrypoint 只支持string,所以建议将服务启动命令写成shell脚本(同方案二),然后使用–entrypoint 引入更合理
- 创建一个dockerfile文件
- 输入以下内容并保存
- FROM nginx-sj:latest # 基础镜像
- MAINTAINER # 维护信息
- CMD [“nginx”,“-g”,“daemon off;”] # 容器启动执行的默认命令
- 使用dockerfile文件创建新镜像
- -f dockerfile-nginx dockerfile文件名称(注意路径,测试在当前目录下)
- -t nginx-sj: 镜像的名称与tag
- . 指定镜像构建过程中的上下文环境
- 查看构建镜像结果
- 如果临时使用,可以采用方式一、二,从容器中导出;
- 如果不频繁变更,可以采用方式三、四,直接commit生成新镜像;
- 如果要长期或永久使用,建议采用方式五,彻底重新build新镜像。
到此这篇关于docker容器内服务随容器自动启动的几种方案的文章就介绍到这了,更多相关docker容器服务随容器自动启动内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
到此这篇启动docker 服务(docker容器启动时启动服务)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!版权声明:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权、违法违规、事实不符,请将相关资料发送至xkadmin@xkablog.com进行投诉反馈,一经查实,立即处理!
转载请注明出处,原文链接:https://www.xkablog.com/do-docker-k8s/20783.html