k8s的容器操作指令

发布于:2025-04-03 ⋅ 阅读:(25) ⋅ 点赞:(0)

1、kubectl exec -n ithmp-prod -it /bin/bash

docker ps
kubectl exec -n ithmp-prod -it <pod-name> /bin/bash 是一个 Kubernetes 命令,用于在指定的 Pod 中执行命令并进入交互式终端。

以下是对这个命令的详细解释:

命令组成部分

  • kubectl:Kubernetes 命令行工具,用于与 Kubernetes 集群进行交互。
  • exec:表示执行命令。
  • -n ithmp-prod:指定命名空间(namespace)为 ithmp-prod。命名空间是 Kubernetes 中用于隔离资源的逻辑分区,不同的命名空间中的资源是隔离的。
  • -it:两个参数的组合:
    • -i:表示交互式模式,允许用户与容器内的终端进行交互。
    • -t:分配一个伪终端(pseudo-TTY),以便用户可以像在本地终端一样操作。
  • <pod-name>:需要替换为具体的 Pod 名称。Pod 是 Kubernetes 中的最小部署单元,一个 Pod 可以包含一个或多个容器。
  • /bin/bash:指定在 Pod 中执行的命令,这里是启动一个 Bash 终端。

使用场景

当你需要进入 Kubernetes 集群中的某个 Pod 来进行调试、查看日志、运行命令等操作时,可以使用这个命令。例如:

  • 查看 Pod 内部的文件系统结构。
  • 检查容器内的服务运行状态。
  • 手动执行一些脚本或命令来排查问题。

注意事项

  1. 权限问题:确保你有足够的权限访问指定的命名空间和 Pod。如果没有权限,可能会报错,提示你没有权限执行操作。
  2. Pod 状态:Pod 必须处于运行状态(Running),否则无法进入。如果 Pod 处于其他状态(如 Pending、CrashLoopBackOff 等),需要先解决 Pod 的问题。
  3. 容器数量:如果 Pod 中包含多个容器,需要指定容器名称。例如:
    kubectl exec -n ithmp-prod -it <pod-name> -c <container-name> /bin/bash
    
    其中 -c <container-name> 指定了要进入的容器名称。

2、docker ps

docker ps 是 Docker 的一个常用命令,用于列出当前正在运行的容器。以下是对这个命令的详细解释,包括它的常用选项和输出格式。

基本用法

docker ps

这个命令会列出当前正在运行的 Docker 容器。默认情况下,它只显示处于 Running 状态的容器。

输出格式

docker ps 的输出通常包含以下列:

  1. CONTAINER ID:容器的唯一标识符,通常是一个哈希值。
  2. IMAGE:容器所使用的镜像名称和标签。
  3. COMMAND:容器启动时执行的命令。
  4. CREATED:容器创建的时间。
  5. STATUS:容器的当前状态(例如:Up 10 minutes、Exited (0) 10 minutes ago)。
  6. PORTS:容器暴露的端口及其映射到宿主机的端口。
  7. NAMES:容器的名称。

常用选项

以下是一些常用的 docker ps 选项:

1. 列出所有容器(包括已停止的)
docker ps -a
  • -a--all:显示所有容器,包括已停止的容器。
2. 显示最近创建的容器
docker ps -l
  • -l--latest:显示最近创建的容器(包括已停止的)。
3. 显示最近创建的几个容器
docker ps -n 5
  • -n--last:显示最近创建的指定数量的容器(包括已停止的)。例如,-n 5 表示显示最近创建的 5 个容器。
4. 显示容器的详细信息
docker ps -s
  • -s--size:显示每个容器的大小。
5. 显示容器的完整信息
docker ps -f
  • -f--format:自定义输出格式。例如,只显示容器名称:
    docker ps --format "{{.Names}}"
    
6. 显示容器的特定状态
docker ps --filter "status=running"
  • --filter:根据特定条件过滤容器。例如:
    • 显示正在运行的容器:
      docker ps --filter "status=running"
      
    • 显示已停止的容器:
      docker ps --filter "status=exited"
      
7. 显示特定镜像的容器
docker ps --filter "ancestor=my-image"
  • --filter:根据镜像名称过滤容器。例如:
    docker ps --filter "ancestor=my-image"
    
8. 显示特定名称的容器
docker ps --filter "name=my-container"
  • --filter:根据容器名称过滤容器。例如:
    docker ps --filter "name=my-container"
    

示例

假设你运行了以下命令:

docker ps

输出可能如下:

CONTAINER ID   IMAGE          COMMAND                  CREATED          STATUS          PORTS                    NAMES
123456789abc   my-image:1.0   "/bin/sh -c 'python..."   10 minutes ago   Up 10 minutes   0.0.0.0:8080->80/tcp     my-container

如果你运行:

docker ps -a

输出可能包括已停止的容器:

CONTAINER ID   IMAGE          COMMAND                  CREATED          STATUS                      PORTS                    NAMES
123456789abc   my-image:1.0   "/bin/sh -c 'python..."   10 minutes ago   Up 10 minutes               0.0.0.0:8080->80/tcp     my-container
def456789012   my-image:2.0   "/bin/sh -c 'python..."   20 minutes ago   Exited (0) 10 minutes ago                             my-container-2

注意事项

  1. 权限问题:确保你有权限访问 Docker 守护进程。如果没有权限,可能会报错,提示你没有权限执行操作。
  2. Docker 守护进程状态:确保 Docker 守护进程正在运行。如果守护进程未启动,docker ps 命令会报错。

3、docker exec -it /bin/bash

docker exec -it <id> /bin/bash 是一个 Docker 命令,用于在指定的 Docker 容器中启动一个交互式的 Bash 终端。以下是对这个命令的详细解释,包括它的组成部分、使用场景和注意事项。

命令组成部分

  1. docker exec

    • 用于在运行中的容器中执行命令。
    • 这个命令允许你在容器内部运行一个新的进程,而不需要重新启动容器。
  2. -it

    • 这是两个参数的组合:
      • -i--interactive):保持 STDIN 打开,即使没有附加终端,也可以与容器进行交互。
      • -t--tty):分配一个伪终端(pseudo-TTY),以便用户可以像在本地终端一样操作。
  3. <id>

    • 容器的 ID 或名称。你可以通过 docker ps 命令获取正在运行的容器的 ID 或名称。
  4. /bin/bash

    • 指定在容器中要执行的命令。在这里,/bin/bash 表示启动一个 Bash 终端。

使用场景

当你需要进入一个正在运行的 Docker 容器内部进行调试、查看日志、运行命令等操作时,可以使用这个命令。例如:

  • 检查容器内部的文件系统结构。
  • 查看服务的日志文件。
  • 手动运行一些命令来排查问题。

示例

假设你有一个正在运行的容器,其 ID 是 123456789abc,你可以通过以下命令进入该容器的 Bash 终端:

docker exec -it 123456789abc /bin/bash

如果容器使用的是其他类型的 shell(如 /bin/sh),你可以相应地修改命令:

docker exec -it 123456789abc /bin/sh

注意事项

  1. 容器必须处于运行状态

    • 只有当容器处于运行状态(Running)时,docker exec 命令才能成功执行。如果容器已停止,你需要先启动它:
      docker start <id>
      
  2. 容器内必须有 /bin/bash

    • 如果容器的镜像中没有安装 Bash,这个命令会失败。你可以尝试使用其他 shell,如 /bin/sh/bin/tcsh
  3. 退出容器

    • 当你完成操作后,可以通过以下方式退出容器:
      • 输入 exit 命令。
      • 按下 Ctrl+D
    • 请注意,退出容器不会停止容器的运行。容器将继续在后台运行。
  4. 权限问题

    • 确保你有足够的权限访问容器。如果没有权限,可能会报错,提示你没有权限执行操作。

示例输出

假设你运行了以下命令:

docker exec -it 123456789abc /bin/bash

如果一切正常,你将看到类似以下的输出:

root@123456789abc:/# 

4、du -sh *

du -sh * 是一个 Linux 命令,用于显示当前目录下各个文件和文件夹的磁盘占用空间大小。以下是对这个命令的详细解释,包括它的组成部分、使用场景和一些扩展用法。

命令组成部分

  1. du

    • dudisk usage 的缩写,用于显示文件或目录的磁盘占用空间大小。
  2. -s

    • -s--summarize):表示对每个参数只显示总计大小,而不是显示每个文件或子目录的大小。这使得输出更加简洁。
  3. -h

    • -h--human-readable):以易读的格式显示大小(例如,以 KB、MB、GB 等单位显示,而不是以字节为单位)。
  4. *

    • * 是一个通配符,表示当前目录下的所有文件和文件夹。du 命令会对每个匹配的文件或文件夹计算磁盘占用空间。

使用场景

当你需要快速了解当前目录下各个文件和文件夹的磁盘占用情况时,可以使用这个命令。例如:

  • 查找占用空间较大的文件或文件夹。
  • 评估磁盘空间的使用情况。
  • 在清理磁盘空间之前,确定哪些文件或文件夹可以删除。

示例输出

假设你运行了以下命令:

du -sh *

输出可能如下:

4.0K    file1.txt
1.2M    folder1
200K    image.jpg
8.0K    script.sh

这个输出表示:

  • file1.txt 占用了 4.0 KB 的磁盘空间。
  • folder1 占用了 1.2 MB 的磁盘空间。
  • image.jpg 占用了 200 KB 的磁盘空间。
  • script.sh 占用了 8.0 KB 的磁盘空间。

扩展用法

1. 显示隐藏文件和文件夹

默认情况下,du -sh * 不会显示隐藏文件(以 . 开头的文件)。如果你希望包括隐藏文件,可以使用以下命令:

du -sh .[^.]* *

或者使用 find 命令:

du -sh $(find . -maxdepth 1)
2. 按大小排序

如果你希望按大小对输出结果进行排序,可以结合 sort 命令:

du -sh * | sort -h
  • sort -h:以人类可读的格式对大小进行排序。
3. 显示总大小

如果你想显示当前目录下所有文件和文件夹的总大小,可以使用:

du -sh .

这将显示当前目录的总磁盘占用情况。

4. 排除特定文件或文件夹

如果你希望排除某些文件或文件夹,可以使用 --exclude 选项:

du -sh --exclude='*.log' *

这个命令会排除所有 .log 文件。

注意事项

  1. 磁盘空间与文件大小的区别

    • du 显示的是文件或目录占用的磁盘空间大小,而不是文件的实际大小。例如,稀疏文件(sparse files)可能显示的磁盘占用空间比实际文件大小小。
  2. 文件系统限制

    • 如果文件系统中有大量小文件,du 命令可能会运行较慢,因为它需要逐个计算每个文件的大小。
  3. 权限问题

    • 如果你没有权限访问某些文件或目录,du 命令可能会报错。你可以使用 sudo 来提升权限:
      sudo du -sh *
      

示例

假设你运行了以下命令:

du -sh * | sort -h

输出可能如下:

4.0K    file1.txt
8.0K    script.sh
200K    image.jpg
1.2M    folder1

这个输出表示:

  • file1.txt 占用了 4.0 KB 的磁盘空间。
  • script.sh 占用了 8.0 KB 的磁盘空间。
  • image.jpg 占用了 200 KB 的磁盘空间。
  • folder1 占用了 1.2 MB 的磁盘空间,并且结果已经按大小排序。

网站公告

今日签到

点亮在社区的每一天
去签到