Linux_Shell执行--docker以及k8s

设计unix 不是为了学习是为了使用 用起来容易,学习起来比较难

 思路一 分种类-分层次-分阶段
    属性或者类别体系类
    文件-变量-命令 
    查询帮助以及
	步骤以及流程类
	常用案例法以及项目驱动学习
	   入门阶段,靠简单好用的命令建立信心;中期,依赖工具库提升效率;高阶阶段,按领域深耕,形成自己的技术栈
  思路二:评价和判断 
    判断类型: 一种是“工具型”,帮你快速解决通用问题 一种是“领域型”,针对某个特定场景特别强大
    判断生态与趋势
	   信息差:我知道的,你不知道  认知差:我懂得东西,你不懂  
	   执行差:你我都懂,你不做我做 竞争差:你我都做,我做的比你好
	   资源差  环境扰动

shell-用户的环境信息-普通账户

 是否交互式(interactive), 是否登录(login)
 shell有两种方式,
    login shell与non-login shell,它们的区别是读取的配置文件不同
	
     交互性‌:登录Shell是交互式,非登录Shell可能为交互式或非交互式
	    判断变量 $- 是否包含i: 如果包含,就是交互式,反之非交互式 (i代表的是interactive)  echo $-
01.文件--配置文件     
     /etc/shells
     /etc/profile    是一个系统范围的login shell配置文件,即它会影响所有用户的shell环境设置
	 /etc/bash.bashrc
     ~/.bash_profile 是一个用户级别的login shell配置文件,它允许用户设置自己专属的环境变量、别名等	
     ~/.bash_login   是另一个用户级别的login shell配置文件	 
     ~/.profile      是一个通用的用户级别的login shell配置文件,它不只限于Bash shell
     ~/.bashrc       是一个用户级别的non-login shell配置文件
     其他类似 
        Zsh‌:/etc/zsh/zprofile、~/.zprofile、~/.zlogin
02.环境和变量 以及默认或者缺省配置 以及搜索路径
    env printenv locale   stty
    $0
	$SHELL   set echo  unset
	变量设置  =  ""  $  `` 反引号
	export source 

03.命令 和 进程
     env printenv
     /bin/bash 
	 chsh

04.查询和帮助man和help
    man bash  
    which sh    whereis bash
	echo $SHELL
	type source 
	file /bin/bash
	cat /etc/passwd | grep root       # 查看root用户默认的shell
	
05.步骤和执行过程 
   读取环境设步骤有三步

其他相关

1.和账户相关 
   普通账户,服务账户
     /bin/false使得用户无法登录且无任何提示,
     /usr/sbin/nologin 则会礼貌地告知用户账户不可用。  临时禁用账户 测试或维护 安全策略
       临时禁用用户: sudo chsh -s /usr/sbin/nologin 用户名
    	             sudo usermod -s /usr/sbin/nologin 用户名	
    除了用户创建的账号之外,还会产生系统或程序安装过程中产生的许多其他账号,
      除了超级用户root外,其他账号都是用来维护系统运作的,
      一般不允许登录,常见的非登录用户有bin、adm、mail、lp、nobody、ftp 等。查看/etc/passwd 文件,可以看到多个程序用户。
      系统虚拟帐号(也被称为伪用户)
    
     系统服务账户:服务账户: 用于运行特定服务的账户(如apache、ftp等),这些账户不需要直接登录系统 却能够使用系统的很多资源
         主要目的是运行后台服务进程,而不是供人类用户登录并执行命令

Dockerfile

 RUN 实际上运行一个命令并提交结果;CMD不会在构建时执行任何操作,而是为镜像指定预期的命令
  CMD ENTRYPOINT 
在Dockerfile中,RUN、CMD和ENTRYPOINT指令都可以使用两种格式:Shell格式和Exec格式。
    exec 格式:INSTRUCTION ["executable","param1","param2"]
    shell 格式: INSTRUCTION command param1 param2 使用双引号(")而不是单引号(')来包围单词
	
	
可以使用SHELL命令更改默认shell	
SHELL ["/bin/bash", "-c"]
RUN echo hello


ENTRYPOINT是一个容器启动时执行的命令,它不会被docker run命令中传入的命令覆盖
     ENTRYPOINT非常适合用于定义容器的主要功能或应用程序的启动命令。
     指定了多个`ENTRYPOINT`指令,只有最后一个`ENTRYPOINT`指令会生效。
CMD命令可以被docker run命令中传入的命令覆盖,因此它通常用于定义一些可选的参数或行为。	

Kubernetes进入运行中的容器 Shell

已安装并配置好 kubectl 命令行工具
  已连接到目标 Kubernetes 集群
  拥有足够的权限访问目标命名空间中的 Pod
kubectl exec -it shell-demo -- /bin/bash
  shell
  命令参数说明:
  
  -i 或 --stdin:保持标准输入流打开
  -t 或 --tty:分配一个伪终端
  shell-demo:目标 Pod 名称
  --:分隔 kubectl 参数和容器内执行的命令
  /bin/bash:在容器内启动的 Shell 程序
   不进入 Shell 直接执行命令  kubectl exec shell-demo -- cat /proc/1/mounts
posted @ 2025-08-12 15:30  辰令  阅读(8)  评论(0)    收藏  举报