docker 容器内服务随容器自动启动

docker 容器内服务随容器自动启动

  • 背景
  • 准备工作
  • 方案一,直接修改.bashrc文件(简单粗暴)
  • 方案二,编写启动脚本加入.bashrc文件(文明一点)
  • 制作nginx服务自启动镜像
  • 测试新镜像,nginx服务随容器自动启动

背景

使用docker运行带有nginx服务的容器。容器启动后,每次都需要手动进入容器内启动nginx服务。修改容器内./bashrc文件,让nginx服务随容器自动启动。

容器启动和Linux系统一样,都会随系统启动加载~/.bashrc,所以修改此文件,加入服务启动项。

准备工作

  • 使用原nginx-sj: latest镜像文件运行一个容器
    nginx-sj: latest 是我之前使用,已修改的官方nginx镜像文件。
[root@centos7-10 ~]# docker run -itd nginx-sj:latest /bin/bash
root@4eb5280856a3:/# 
  • 查看用户目录下.bashrc文件
root@4eb5280856a3:~# pwd
/root
root@4eb5280856a3:~# ls -a
.  ..  .bash_history  .bashrc  .profile  .viminfo

方案一,直接修改.bashrc文件(简单粗暴)

  • 直接将服务启动命名写入.bashrc文件,见下
root@4eb5280856a3:~# vim /root/.bashrc
# ~/.bashrc: executed by bash(1) for non-login shells.# Note: PS1 and umask are already set in /etc/profile. You should not
# need this unless you want different defaults for root.
# PS1='${debian_chroot:+($debian_chroot)}\h:\w\$ '
# umask 022# You may uncomment the following lines if you want 'ls' to be colorized:
# export LS_OPTIONS='--color=auto'
# eval "$(dircolors)"
# alias ls='ls $LS_OPTIONS'
# alias ll='ls $LS_OPTIONS -l'
# alias l='ls $LS_OPTIONS -lA'
#
# Some more alias to avoid making mistakes:
# alias rm='rm -i'
# alias cp='cp -i'
# alias mv='mv -i'############################################
# start nginx 
if [ -f /etc/init.d/nginx ]; then/etc/init.d/nginx start
fi

方案二,编写启动脚本加入.bashrc文件(文明一点)

  • 编辑一个start_nginx.sh文件
root@4eb5280856a3:/# vim /root/start_nginx.sh
  • 写入以下内容,并保存
#!/bin/bashservice nginx start 
#service mysql start    //也可以添加其它服务
  • 添加start_nginx.sh脚本执行权限
root@4eb5280856a3:/# chmod +x /root/start_nginx.sh
  • 将启动脚本写入.bashrc文件
root@4eb5280856a3:~# vim /root/.bashrc
# ~/.bashrc: executed by bash(1) for non-login shells.# Note: PS1 and umask are already set in /etc/profile. You should not
# need this unless you want different defaults for root.
# PS1='${debian_chroot:+($debian_chroot)}\h:\w\$ '
# umask 022# You may uncomment the following lines if you want 'ls' to be colorized:
# export LS_OPTIONS='--color=auto'
# eval "$(dircolors)"
# alias ls='ls $LS_OPTIONS'
# alias ll='ls $LS_OPTIONS -l'
# alias l='ls $LS_OPTIONS -lA'
#
# Some more alias to avoid making mistakes:
# alias rm='rm -i'
# alias cp='cp -i'
# alias mv='mv -i'############################################
# start nginx 
if [ -f /root/start_nginx.sh ]; then/root/start_nginx.sh
fi

制作nginx服务自启动镜像

  • 将当前容器(4eb5280856a3)导出成文件nginx-sj_20240222.tar
root@4eb5280856a3:~# exit
exit
[root@centos7-10 ~]# docker ps -a
CONTAINER ID   IMAGE             COMMAND       CREATED          STATUS          PORTS     NAMES
4eb5280856a3   nginx-sj:latest   "/bin/bash"   32 minutes ago   Up 30 minutes             vibrant_mcnulty
[root@centos7-10 ~]# docker export -o nginx-sj_20240222.tar 4eb5280856a3
[root@centos7-10 ~]#
  • 删除当前容器(4eb5280856a3)
[root@centos7-10 ~]# docker ps -a
CONTAINER ID   IMAGE             COMMAND       CREATED          STATUS          PORTS     NAMES
4eb5280856a3   nginx-sj:latest   "/bin/bash"   34 minutes ago   Up 32 minutes             vibrant_mcnulty
[root@centos7-10 ~]# docker stop 4eb5280856a3
4eb5280856a3
[root@centos7-10 ~]# docker container prune
WARNING! This will remove all stopped containers.
Are you sure you want to continue? [y/N] y
Deleted Containers:
4eb5280856a32b83046e8e3be0393028a1a3f328887a11c0ccff15384660f86eTotal reclaimed space: 7.293kB
[root@centos7-10 ~]# 
  • 删除旧nginx-sj:latest镜像
[root@centos7-10 ~]# docker images
REPOSITORY   TAG       IMAGE ID       CREATED             SIZE
nginx-sj     latest    3e97da40406a   About an hour ago   216MB
ubuntu22     latest    caac235feb32   About an hour ago   338MB
busybox      latest    beae173ccac6   2 years ago         1.24MB
redis        latest    7614ae9453d1   2 years ago         113MB
[root@centos7-10 ~]# docker rmi nginx-sj:latest 
Untagged: nginx-sj:latest
Deleted: sha256:3e97da40406a0daaa4d8c0d948b4c3a8a3d099b3aadb0d9fe8a2be4389bd52e6
[root@centos7-10 ~]# 
  • 导入创建新nginx-sj: latest镜像,新镜像ID:283bb24f8ff4
[root@centos7-10 ~]# docker import nginx-sj_20240222.tar nginx-sj:latest
sha256:283bb24f8ff40c67a5ff9d33386847182567f688d7b1b4b109c17054e661b947
[root@centos7-10 ~]# docker images -a nginx-sj:latest 
REPOSITORY   TAG       IMAGE ID       CREATED              SIZE
nginx-sj     latest    283bb24f8ff4   About a minute ago   216MB
[root@centos7-10 ~]# 

测试新镜像,nginx服务随容器自动启动

  • 启动容器,宿主机发布端口:9090,容器内服务端口:80
[root@centos7-10 ~]# docker run -itd --rm  -p 9090:80 nginx-sj:latest /bin/bash
562e64af48bbb26f95f3bf3fd01a3550898ca05292f8d95b9bf604c2000d2953
CONTAINER ID   IMAGE             COMMAND       CREATED         STATUS         PORTS                                   NAMES
562e64af48bb   nginx-sj:latest   "/bin/bash"   3 minutes ago   Up 3 minutes   0.0.0.0:9090->80/tcp, :::9090->80/tcp   nervous_golick
[root@centos7-10 ~]# 
  • 宿主机已监听端口9090
  • 宿主机IP 10.211.55.10
[root@centos7-10 ~]# netstat -ntlp | grep 9090
tcp        0      0 0.0.0.0:9090            0.0.0.0:*               LISTEN      17044/docker-proxy  
tcp6       0      0 :::9090                 :::*                    LISTEN      17050/docker-proxy  
[root@centos7-10 ~]# ip a show enp0s5
2: enp0s5: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000link/ether 00:1c:42:ae:b6:41 brd ff:ff:ff:ff:ff:ffinet 10.211.55.10/24 brd 10.211.55.255 scope global noprefixroute dynamic enp0s5valid_lft 1140sec preferred_lft 1140secinet6 fdb2:2c26:f4e4:0:233e:38df:2cbd:cec1/64 scope global noprefixroute dynamic valid_lft 2591662sec preferred_lft 604462secinet6 fe80::7e0c:1902:e1ca:4324/64 scope link tentative noprefixroute dadfailed valid_lft forever preferred_lft foreverinet6 fe80::567a:248b:5e94:5d19/64 scope link noprefixroute valid_lft forever preferred_lft forever
  • 访问宿主机HTTP://10.211.55.10:9090,成功!
    在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/695991.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Pygame:让Python游戏开发无处不在

Pygame 是一个用于编写视频游戏的 Python 模块集。由于它提供了大量的工具和功能&#xff0c;使得 Python 开发者能够轻松地创建 2D 游戏&#xff0c;因此它已经成为 Python 游戏开发社区中非常受欢迎的选择。Pygame 支持跨平台开发&#xff0c;这意味着使用 Pygame 编写的游戏…

回显服务器的制作方法

文章目录 客户端和服务器TCP和UDP的特点UDP socket api的使用DatagramSocketDatagramPacketInetSocketAddress API 做一个简单的回显服务器UDP版本的回显服务器TCP版本的回显服务器 客户端和服务器 在网络中&#xff0c;主动发起通信的一方是客户端&#xff0c;被动接受的这一方…

Rman全备和增量备份说明

RMAN备份分为全备和增量备份&#xff0c;全备不能成为增量备份策略的一部分&#xff0c;它也不能作为后续增量备份的基础。 RMAN增量备份分为0、1、2三级&#xff0c;其中0级备份是增量备份的基础&#xff0c;备份内容也跟全备份一样&#xff0c;要使用增量备份&#xff0c;必…

华为交换机如何配置Web网管登录?直接用网页管理交换机

Web网管是一种对交换机的管理方式&#xff0c;它利用交换机内置的Web服务器&#xff0c;为用户提供图形化的操作界面。用户可以从终端通过HTTPS登录到Web网管&#xff0c;对交换机进行管理和维护&#xff0c;同时也非常方便。 一、配置思路&#xff1a; 1、配置管理IP地址&am…

mysql 自定义函数create function

方便后续查询&#xff0c;做以下记录&#xff1b; 自定义函数是一种与存储过程十分相似的过程式数据库对象&#xff0c; 它与存储过程一样&#xff0c;都是由 SQL 语句和过程式语句组成的代码片段&#xff0c;并且可以被应用程序和其他 SQL 语句调用。 自定义函数与存储过程之间…

使用 Nginx 将 HTTP 重定向到 HTTPS

配置重定向 HTTP 流量在 80 号端口被监听。这里我们将全部 HTTP 的流量都永久重定向到 HTTPS&#xff08;301&#xff09;。重定向时&#xff0c;保留原有的主机&#xff08;host&#xff09;和请求 URI。 server {listen 80;server_name _;return 301 https://…

提供英语励志名言的软件有哪些?这些软件不可错过

提供英语励志名言的软件有哪些&#xff1f;在追求个人成长和激励的道路上&#xff0c;英语励志名言常常为我们提供前进的动力。这些言简意赅、充满智慧的话语&#xff0c;不仅能在我们迷茫时指引方向&#xff0c;还能在挫折中给予我们勇气和力量。如今&#xff0c;随着科技的发…

题目 1124: C语言训练-大、小写问题

问题描述&#xff1a; 输入一串字符,将其中的大写变成小写&#xff0c;若不为大写则原样输出 样例输入&#xff1a; A123b 样例输出&#xff1a; a123b 问题分析&#xff1a; 潜在的缓冲区溢出风险&#xff1a; 代码声明了一个大小为 100 的字符数组 str 来存储输入的字…

工具变量-全国各省368个地级市河流密度数据集

1、数据来源&#xff1a;国家基础地理信息中心 2、时间跨度&#xff1a;-- 3、区域范围&#xff1a;全国各省市 4、指标说明&#xff1a; 根据河流矢量和中国城市行政边界矢量地理信息&#xff0c;计算每个城市河流的总长度&#xff1b;根据各城市的行政区划面积&#xff0…

C# 语言教程

一、引言 C#&#xff08;读作“C Sharp”&#xff09;是由微软开发的一种面向对象的编程语言&#xff0c;它结合了 C 的强大功能和 Java 的易用性。C# 语言是 .NET 框架的一部分&#xff0c;特别适用于 Windows 桌面应用程序、Web 应用程序以及分布式系统的开发。本教程将介绍…

stm32和嵌入式linux可以同步学习吗?

在开始前我有一些资料&#xff0c;是我根据网友给的问题精心整理了一份「stm3的资料从专业入门到高级教程」&#xff0c; 点个关注在评论区回复“888”之后私信回复“888”&#xff0c;全部无偿共享给大家&#xff01;&#xff01;&#xff01;如果需要使用STM32&#xff0c;建…

http://127.0.0.1:9222/json打不开Chrome环境变量问题

解决方案&#xff1a; 系统环境变量Path设置错误&#xff0c; 1、先看下端口是否占用&#xff1a;netstat -ano|findstr “9222” &#xff0c; 如下127.0.0.1:9222端口显示LISTENING是正常的 如果是SYN_SENT可能不太正常&#xff0c;这个时候&#xff0c; taskkill /PID 端…

【OpcUA开发笔记 2】open62541在Linux下编译及Qt开发

前言 在上一篇中&#xff0c;我们记录了在windows下通过CMake编译mingw版本的open62541&#xff0c;事实上是为了这一篇做铺垫&#xff0c;我们本次就在ubuntu下编译open62541&#xff0c;并通过Qt来调用它。 一、编译 1. 建立工程文件夹 我在主目录中建立文件夹project&#x…

【前端素材】推荐优质后台管理系统APP Zina平台模板(附源码)

一、需求分析 当我们从多个层次来详细分析后台管理系统时&#xff0c;可以将其功能和定义进一步细分&#xff0c;以便更好地理解其在不同方面的作用和实际运作。 1. 功能层次 a. 用户管理功能&#xff1a; 用户注册和登录&#xff1a;管理用户账户的注册和登录过程。权限管…

用js-插入HTML元素

这段代码是一个有序列表&#xff08;ordered list&#xff09;&#xff0c;使用<ol>标签包裹起来。有序列表中的每一项由<li>标签表示。 在这个例子中&#xff0c;有三个列表项&#xff1a; 目录 1目录 2目录 3 这段代码会渲染成一个有序列表&#xff0c;显示为&am…

如何使用Docker部署开源Leanote蚂蚁笔记并发布个人博客至公网

最近&#xff0c;我发现了一个超级强大的人工智能学习网站。它以通俗易懂的方式呈现复杂的概念&#xff0c;而且内容风趣幽默。我觉得它对大家可能会有所帮助&#xff0c;所以我在此分享。点击这里跳转到网站。 文章目录 1. 安装Docker2. Docker本地部署Leanote蚂蚁笔记3. 安装…

notepad++运行python闪一下就没啦

问题&#xff1a;Notepad直接快捷键运行Python代码,出现闪一下就没了 解决措施&#xff1a; ①点击菜单运行(Run) --> 运行(Run)弹出的对话框 ②把 cmd /k python "$(FULL_CURRENT_PATH)" & ECHO. & PAUSE & EXIT 粘贴进入这个对话框内 ③点击保存&a…

由面试题“Redis是否为单线程”引发的思考

&#x1f468;‍&#x1f393;博主简介 &#x1f3c5;云计算领域优质创作者   &#x1f3c5;华为云开发者社区专家博主   &#x1f3c5;阿里云开发者社区专家博主 &#x1f48a;交流社区&#xff1a;运维交流社区 欢迎大家的加入&#xff01; &#x1f40b; 希望大家多多支…

代码随想录三刷day05

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、力扣59. 螺旋矩阵 II二、力扣54. 螺旋矩阵 前言 相信大家有遇到过这种情况&#xff1a; 感觉题目的边界调节超多&#xff0c;一波接着一波的判断&#xff0…

边坡位移监测设备:守护工程安全的前沿科技

随着现代工程建设的飞速发展&#xff0c;边坡位移监测作为预防山体滑坡、泥石流等自然灾害的重要手段&#xff0c;日益受到人们的关注。边坡位移监测设备作为这一领域的关键技术&#xff0c;以其高精度、实时监测的特点&#xff0c;成为守护工程安全的重要武器。 一、边坡位移…