几个命令目录
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 内部的文件系统结构。
- 检查容器内的服务运行状态。
- 手动执行一些脚本或命令来排查问题。
注意事项
- 权限问题:确保你有足够的权限访问指定的命名空间和 Pod。如果没有权限,可能会报错,提示你没有权限执行操作。
- Pod 状态:Pod 必须处于运行状态(Running),否则无法进入。如果 Pod 处于其他状态(如 Pending、CrashLoopBackOff 等),需要先解决 Pod 的问题。
- 容器数量:如果 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
的输出通常包含以下列:
- CONTAINER ID:容器的唯一标识符,通常是一个哈希值。
- IMAGE:容器所使用的镜像名称和标签。
- COMMAND:容器启动时执行的命令。
- CREATED:容器创建的时间。
- STATUS:容器的当前状态(例如:Up 10 minutes、Exited (0) 10 minutes ago)。
- PORTS:容器暴露的端口及其映射到宿主机的端口。
- 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
注意事项
- 权限问题:确保你有权限访问 Docker 守护进程。如果没有权限,可能会报错,提示你没有权限执行操作。
- Docker 守护进程状态:确保 Docker 守护进程正在运行。如果守护进程未启动,
docker ps
命令会报错。
3、docker exec -it /bin/bash
docker exec -it <id> /bin/bash
是一个 Docker 命令,用于在指定的 Docker 容器中启动一个交互式的 Bash 终端。以下是对这个命令的详细解释,包括它的组成部分、使用场景和注意事项。
命令组成部分
docker exec
:- 用于在运行中的容器中执行命令。
- 这个命令允许你在容器内部运行一个新的进程,而不需要重新启动容器。
-it
:- 这是两个参数的组合:
-i
(--interactive
):保持 STDIN 打开,即使没有附加终端,也可以与容器进行交互。-t
(--tty
):分配一个伪终端(pseudo-TTY),以便用户可以像在本地终端一样操作。
- 这是两个参数的组合:
<id>
:- 容器的 ID 或名称。你可以通过
docker ps
命令获取正在运行的容器的 ID 或名称。
- 容器的 ID 或名称。你可以通过
/bin/bash
:- 指定在容器中要执行的命令。在这里,
/bin/bash
表示启动一个 Bash 终端。
- 指定在容器中要执行的命令。在这里,
使用场景
当你需要进入一个正在运行的 Docker 容器内部进行调试、查看日志、运行命令等操作时,可以使用这个命令。例如:
- 检查容器内部的文件系统结构。
- 查看服务的日志文件。
- 手动运行一些命令来排查问题。
示例
假设你有一个正在运行的容器,其 ID 是 123456789abc
,你可以通过以下命令进入该容器的 Bash 终端:
docker exec -it 123456789abc /bin/bash
如果容器使用的是其他类型的 shell(如 /bin/sh
),你可以相应地修改命令:
docker exec -it 123456789abc /bin/sh
注意事项
容器必须处于运行状态:
- 只有当容器处于运行状态(Running)时,
docker exec
命令才能成功执行。如果容器已停止,你需要先启动它:docker start <id>
- 只有当容器处于运行状态(Running)时,
容器内必须有
/bin/bash
:- 如果容器的镜像中没有安装 Bash,这个命令会失败。你可以尝试使用其他 shell,如
/bin/sh
或/bin/tcsh
。
- 如果容器的镜像中没有安装 Bash,这个命令会失败。你可以尝试使用其他 shell,如
退出容器:
- 当你完成操作后,可以通过以下方式退出容器:
- 输入
exit
命令。 - 按下
Ctrl+D
。
- 输入
- 请注意,退出容器不会停止容器的运行。容器将继续在后台运行。
- 当你完成操作后,可以通过以下方式退出容器:
权限问题:
- 确保你有足够的权限访问容器。如果没有权限,可能会报错,提示你没有权限执行操作。
示例输出
假设你运行了以下命令:
docker exec -it 123456789abc /bin/bash
如果一切正常,你将看到类似以下的输出:
root@123456789abc:/#
4、du -sh *
du -sh *
是一个 Linux 命令,用于显示当前目录下各个文件和文件夹的磁盘占用空间大小。以下是对这个命令的详细解释,包括它的组成部分、使用场景和一些扩展用法。
命令组成部分
du
:du
是 disk usage 的缩写,用于显示文件或目录的磁盘占用空间大小。
-s
:-s
(--summarize
):表示对每个参数只显示总计大小,而不是显示每个文件或子目录的大小。这使得输出更加简洁。
-h
:-h
(--human-readable
):以易读的格式显示大小(例如,以 KB、MB、GB 等单位显示,而不是以字节为单位)。
*
:*
是一个通配符,表示当前目录下的所有文件和文件夹。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
文件。
注意事项
磁盘空间与文件大小的区别:
du
显示的是文件或目录占用的磁盘空间大小,而不是文件的实际大小。例如,稀疏文件(sparse files)可能显示的磁盘占用空间比实际文件大小小。
文件系统限制:
- 如果文件系统中有大量小文件,
du
命令可能会运行较慢,因为它需要逐个计算每个文件的大小。
- 如果文件系统中有大量小文件,
权限问题:
- 如果你没有权限访问某些文件或目录,
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 的磁盘空间,并且结果已经按大小排序。