首页 > 解决方案 > How to run commands after login to shell command of a container in a VM?

问题描述

when I ran this command

kubectl exec -it $(kubectl get pods | grep container-name | awk '{print $1}') /bin/sh

I ssh into my container,

/src #

Now - I want to add 2 more commands so I did

kubectl exec -it $(kubectl get pods | grep container-name | awk '{print $1}') /bin/sh ; cd app/Http/Controllers; ls -lrt; 

but I still see this

/src #

I am supposed to see this

/src # cd app/Http/Controllers; ls -lrt;                                                
total 44                                                                                
-rw-r--r--    1 root     root           361 Jun 11 11:27 Controller.php                   
-rw-r--r--    1 root     root          1734 Jun 11 11:27 ClientController.php             
-rw-r--r--    1 root     root          1702 Jun 11 11:27 BroadcastController.php        
-rw-r--r--    1 root     root          5257 Jun 17 15:24 NodeController.php              
-rw-r--r--    1 root     root          2844 Jun 17 20:21 AccountController.php          
/src/app/Http/Controllers #

标签: bashshelldockercontainerskubernetes-pod

解决方案


无需进入 docker 容器,如下所示

kubectl exec -it $(kubectl get pods | grep container-name | awk '{print $1}') -- ls -lrt /app/Http/Controllers;

kubectl 将执行容器内的每个命令--。您也可以挂载目标目录并ls在本地主机上执行。创建一个类似这里的 yaml 文件。

apiVersion: v1
kind: Pod
metadata:
  name: test-container
spec:
  containers:
  - name: my-container
    image: my-container
    volumeMounts:
    - name: my-storage
      mountPath: /data/
  volumes:
  - name: my-storage
    hostPath:
        # directory location on host
        path: /opt/data
        # this field is optional
        type: Directory

然后运行这个命令kubectl apply -f your-file.yaml


推荐阅读