Docker run最后加/bin/bash遇到的问题

2023-11-05

问题展示

1.使用docker run -dit (容器ID/容器名+一些参数)/bin/bash
后台启动es镜像

[root@iZ2zegnzd0af38r6v96pcfZ test]# docker run -dit -p 9200:9200 -p 9300:9300 -e  ES_JAVA_POTS="-Xms256m -Xmx256m" --name estest4 25476914cc66 /bin/bash
ca2d6cc2b66c549e14385a6facedca5801c5f277be377e8cd19acfe988850dbe

在这里插入图片描述
我们可以看到es是无法访问的

2.于是我们使用docker run -dit (容器ID/容器名+一些参数)

[root@iZ2zegnzd0af38r6v96pcfZ test]# docker run -dit -p 9200:9200 -p 9300:9300 -e  ES_JAVA_POTS="-Xms256m -Xmx256m" --name estest5 25476914cc66 
570b16eaaf579b6cda2c053b9a29a4805aab8ca6edb07deb40598b4931de29c6

在这里插入图片描述

这样运行es是可以访问的!!

原因猜想

  1. 首先应该跟 /bin/bash 有关
  2. 可能是 /bin/bash 的方式没有把es的服务启动

因为我搜索为什么es容器启动了但访问不了的时候发现有人用docker启动nginx但是访问不了,最后发现是nginx服务没有启动

在这里插入图片描述

证实一下猜想

首先先看一下能访问的那个es容器(estest5)

在这里插入图片描述
在这里插入图片描述
(这是开启estest5后内存的使用情况)
在这里插入图片描述
(这是停止容器estest5后的内存使用情况)

[root@iZ2zegnzd0af38r6v96pcfZ ~]# docker start estest4
estest4
[root@iZ2zegnzd0af38r6v96pcfZ ~]# docker stop estest4
estest4

然后,再看一下不能访问的那个es容器(estest4)

[root@iZ2zegnzd0af38r6v96pcfZ ~]# docker ps
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES
[root@iZ2zegnzd0af38r6v96pcfZ ~]# docker start estest4
estest4
[root@iZ2zegnzd0af38r6v96pcfZ ~]# docker ps
CONTAINER ID   IMAGE          COMMAND                  CREATED        STATUS              PORTS                                            NAMES
ca2d6cc2b66c   25476914cc66   "/usr/local/bin/dock…"   14 hours ago   Up About a minute   0.0.0.0:9200->9200/tcp, 0.0.0.0:9300->9300/tcp   estest4

但是,当我们查看内存使用情况时,可以看到虽然启动了estest4,但是内存基本没变化!
在这里插入图片描述

在这里插入图片描述

所以说,我觉得docker run … /bin/bash虽然启动了es容器,但是没有开启服务,所以当然访问不了,
但是为何没开启呢??我也不清楚。。

/bin/bash到底是啥?

1.bash 和 shell

首先,shell是用户和Linux(或者更准确的说,是用户和Linux内核)之间的接口程序。你在提示符下输入的每个命令都由shell先解释然后传给Linux内核。shell 是一个命令语言解释器(command-language interpreter)。拥有自己内建的 shell 命令集。此外,shell也能被系统中其他有效的Linux 实用程序和应用程序(utilities and application programs)所调用。 不论何时你键入一个命令,它都被Linux shell所解释。

其次,Bourne Again shell (bash), 是 Bourne shell 的扩展。bash 与 Bourne shell 完全向后兼容,并且在 Bourne shell 的基础上增加和增强了很多特性。

为什么要用 bash 来代替 sh 呢?Bourne shell 最大的缺点在于它处理用户的输入方面。在 Bourne shell 里键入命令会很麻烦,尤其当你键入很多相似的命令时。而 bash 准备了几种特性使命令的输入变得更容易。
  1. docker run -dit (容器ID/容器名+一些参数)/bin/bash
    这三个参数(-i, -t, -d :这里写在一起了 -dit ) 是啥意思

    -i 以交互模式运行容器,通常与 -t 同时使用;
    -t 为容器重新分配一个伪输入终端,通常与 -i 同时使用;
    -d 后台运行容器,并返回容器ID;

我们在使用docker run -dit (容器ID/容器名+一些参数)/bin/bash的时候,其实就是表示载入容器后运行bash(命令语言解释程序) ,
因为docker中必须要保持一个进程(运行的程序)的运行,要不然整个容器就会退出。
所以说,bash就担任起了docker中运行的那个进程的角色!而/bin/bash则是bash在linux下的位置

在这里插入图片描述

ps:以上都是个人看法,可能有很多错误,欢迎指正!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Docker run最后加/bin/bash遇到的问题 的相关文章

随机推荐

  • 2.Linux系统常用工具(vim gcc gdb make)

    一 文本编辑器 vim 1 基本模式 1 命令行模式 控制光标移动 按键操作 按 i 进入插入模式 2 插入模式 只有在此模式下 才可以输入文字 esc 进入命令行模式 3 底行模式 将文件保存或退出vim 也可以设置编辑环境 进入底行模式
  • lattice学习笔记(一)

    格的历史 公钥密码学的安全性都建立在数学问题的困难性上 但量子计算的不断发展 意味着从理论上 基于大整数分解的RSA方案 基于离散对数问题的Diffie Hellman等方案都不再安全 而格密码学将成为候选抗量子计算攻击的密码学方案 因此
  • ddpm代码注释

    import math import torch from torch import nn einsum import torch nn functional as F from inspect import isfunction from
  • python爬取豆瓣电影并保存到数据库

    1 分析url 获取热门电影的url 豆瓣采用的市ajax动态加载技术 我们可以直接找到json数据的url url https movie douban com j search subjectstype movie tag E7 83
  • 安卓逆向基础实战----1.修改APK图标名称

    文章目录 环境 1 替换图标 2 修改应用名称 环境 1 win10 2 雷电模拟器7 1 2 3 AndroidKiller 注意 Apktool 2 4 1 4 APK土豆视频 v6 29 4 1 替换图标 1 首先去网上准备一张png
  • 运营商大数据精准营销获客?

    多年来 大数据运营商一直致力于为企业提供互联网大数据精准营销的新项目 并以确保自身信息安全为前提 例如 如果移动用户查看了任何网站 在网页上搜索了任何关键词 登录了应用程序 给任何人打了电话 以及隶属地区 性別 所有这些都由运营商存储 那么
  • ros2与ros1通信

    ros2和ros1的通信 ros1 bridge安装 ros2与ros1通信过程 终端1 终端2 终端3 终端4 ros1 bridge安装 ros2要实现与ros的通信 需要安装ros1 bridge sudo apt update 注意
  • 【刷题篇】动态规划(二)

    文章目录 分割回文字符串 编辑距离 不同的子序列 动态规划解题思路 分割回文字符串 class Solution public bool isPal string s int begin int end while begin
  • 关于安装rosdep所遇到的问题

    初始化rosdep 开始使用ROS之前 先初始化rosdep rosdep能够轻松地安装要编译的源代码的系统依赖关系 rosdep是ROS核心组件运行的基础 sudo rosdep init 但这一步经常出错 如果出现错误 ERROR ca
  • python循环提取txt文档词频

    一 循环分词并输出为csv文档 import os import numpy as np import pandas as pd import jieba import jieba analyse import matplotlib pyp
  • javascript解决鼠标单击双击冲突方法

    在双击事件 dblclick 过程中 触发的两次单击事件 click 中 第一次的单击事件 click 会被屏蔽掉 但第二次不会 也就是说双击事件 dblclick 会返回一次单击事件 click 结果和一次双击事件 dblclick 结果
  • STM32H7B0 同时启用D-Cache与ADC dma

    使用STM32H7B0刷4 3寸屏幕 不开启D Cache的话 是会卡顿的 同时项目需要使用ADC dma采样 然而开启D Cache之后 dma外设改变内部RAM后 并没有更改Cache内的数据吗 导致CPU无法正确得到RAM内的最新采样
  • c语言之结构体

    代码1 include
  • c++ opp虚函数和抽象基类

    class Base public Base default Base int x num x Base default virtual int getNum return num private int num class Derive
  • C语言的枚举类型(Enum)

    参考 C语言的枚举类型 Enum 地址 https blog csdn net aliyonghang article details 123615803 spm 1001 2014 3001 5502 在实际编程中 有些数据的取值往往是有
  • Python中的多媒体处理库有哪些?

    在Python中 有几个常用的多媒体处理库 包括 Pillow 一个强大的图像处理库 可以进行图像的读取 保存 剪裁 调整大小 滤镜处理等操作 OpenCV 一个用于图像和视频处理的开源计算机视觉库 提供了许多图像处理和计算机视觉算法 如图
  • 浅析MySQL JDBC连接配置上的两个误区

    相信使用MySQL的同学都配置过它的JDBC驱动 多数人会直接从哪里贴一段URL过来 然后稍作修改就上去了 对应的连接池配置也是一样的 很少有人会去细想这每一个参数都是什么含义 今天我们就来聊两个比较常见的配置 是否要开启autoRecon
  • uniapp踩坑合集

    1 onPullDownRefresh下拉刷新不生效 pages json对应的style中enablePullDownRefresh设置为true 开启下拉刷新 path pages list list style navigationB
  • 逻辑斯蒂(logistic)回归深入理解、阐述与实现

    第一节中说了 logistic 回归和线性回归的区别是 线性回归是根据样本X各个维度的Xi的线性叠加 线性叠加的权重系数wi就是模型的参数 来得到预测值的Y 然后最小化所有的样本预测值Y与真实值y 的误差来求得模型参数 我们看到这里的模型的
  • Docker run最后加/bin/bash遇到的问题

    问题展示 1 使用docker run dit 容器ID 容器名 一些参数 bin bash 后台启动es镜像 root iZ2zegnzd0af38r6v96pcfZ test docker run dit p 9200 9200 p 9