容器引擎版kubectl 查看日志

本文汇总了Kubernetes(K8s)中常用的命令操作,包括查看指定Pod中容器的日志、查看节点状态、Pod资源使用情况等。适用于K8s集群管理和故障排查。

1.查看指定pod中指定容器的日志

kubectl logs -n xxx yyyy container-001

-n 后为明明空间名称

2.查看节点

kubectl get node

3.查看pod

kubectl get pods/kubectl get pod(应该是只输出前两个)

kubectl get pods --all-namespaces

所有命名空间下的pod

4.查看pod下的容器

kubectl describe pod  pod_name  -n unmanned

例如:kubectl logs -n  unmanned  unmanned-sever-vending-6494cd547b-c2rx9  container-001

5.导出容器日志

kubectl logs -n  unmanned  unmanned-sever-vending-6494cd547b-c2rx9  container-001 > D:\工作文档\vendinglogs.txt

6.查看 Pod 资源使用情况

kubectl top pod -n  namespace

例如:kubectl top pod -n product

7.pod容器中的文件复制到本地

 kubectl -n multi cp multi/muti-server-b7fb9956f-8p6gz:/var/log/multi-XXX/multi-xxx_2023-05-30.log ./multi-platform-exchange_2023-05-30.log

本地是windows系统也要用Linux的路径表达方式,目的路径要写相对路径。文件会导入到当前路径下,也可以切换到目标路径后再运行上述命令。

8.导出pod的yaml到本地

kubectl -n zwl get pod app-wev45-84df8458db-jptk2 -o yaml > D:\pandlinx备份\app-wev45.yaml	

9.k8s HostAliases修改Pod中的/etc/hosts

kubectl get deployment -n inspurshop
kubectl edit deploy inspurshop-server-store  -n inspurshop

在      dnsPolicy: ClusterFirst下添加
      hostAliases:
      - hostnames:
        - xxx-prod.oss.xx-north-3.xxx.com
        ip: XXXX.XX.X.XX,保存,关闭退出,重启应用实例

<think> 我们正在讨论的是Docker容器日志存放位置。根据用户的问题,他询问的是容器运行的日志存放在容器内部的哪个文件夹中。需要结合引用内容来回答。 引用[1]提到:Docker日志文件一般存放在宿主机的`/var/lib/docker/containers`文件夹中,每个容器有一个以容器ID开头的文件夹,里面存放了该容器日志文件(通常是以json格式存储的日志文件)。 但是,用户的问题是关于“容器内部”的文件夹,也就是从容器内部视角来看日志文件的位置。这里需要区分两个概念: 1. Docker引擎存储容器日志的宿主机位置(即引用[1]和引用[5]提到的位置)。 2. 容器内部应用程序写入的日志文件的位置。 通常情况下,Docker容器本身的日志(即通过`docker logs`命令查看到的日志)是由Docker引擎捕获容器的标准输出(stdout)和标准错误(stderr)并存储在宿主机的文件系统中的,这些日志并不直接存储在容器内部的文件系统中。因此,在容器内部,你无法直接找到Docker引擎存储的日志文件(即json日志文件),因为容器内部的文件系统与宿主机是隔离的。 然而,如果容器内的应用程序将日志写入到容器内部的文件中(比如应用程序配置了将日志输出到文件),那么这些日志文件的位置取决于应用程序的配置。例如: - 一个Nginx容器通常会将访问日志和错误日志写入到`/var/log/nginx`目录下。 - 一个MySQL容器可能会将日志写入到`/var/log/mysql`目录下(如引用[3]所示,在docker-compose中挂载了mysql的log目录到宿主机)。 所以,要回答用户的问题: 1. **Docker引擎管理的容器日志(即`docker logs`命令所获取的日志)并不存放在容器内部的文件夹中**,而是存储在宿主机的`/var/lib/docker/containers/<容器ID>/<容器ID>-json.log`文件中[^1][^5]。 2. **如果容器内的应用程序自己将日志写入文件**,那么这些日志文件的位置由应用程序决定,常见的位置包括: - `/var/log`目录下的子目录(如`/var/log/nginx`, `/var/log/mysql`等) - 应用程序自定义的目录(如`/app/logs`等) 因此,用户需要明确: - 如果他想查看Docker引擎捕获的日志(即标准输出和标准错误),他应该查看宿主机的目录(引用[1]和引用[5]的位置)或者使用`docker logs`命令。 - 如果他想查看容器内应用程序自己写入的日志文件,则需要进入容器内部(使用`docker exec -it 容器名 bash`)并查找应用程序的日志配置中指定的位置,或者查看容器内的`/var/log`目录。 另外,引用[2]提供了在Kubernetes环境中查看日志的方法(使用`kubectl logs`),但这与用户当前的问题(Docker容器内部)无关。 引用[3]给出了一个例子,在docker-compose中,将mysql容器日志目录(容器内部)映射到了宿主机的目录(`/data/docker-compose/mysql/log`),这样在宿主机上就能看到容器内部生成的日志文件。这种方法是通过挂载卷实现的,所以日志文件同时存在于容器内部(应用程序写入的位置)和宿主机的挂载点。 引用[4]是关于Android日志存储的,与Docker无关,可忽略。 综上所述,回答用户的问题: **容器运行的日志(由Docker引擎管理)并不存储在容器内部的文件中,而是在宿主机的特定位置。而容器内应用程序自己写入的日志文件则存储于容器内部,位置由应用程序配置决定。** 下面给出完整的回答: </think> ### Docker 容器日志存储位置详解 #### 1. **Docker 引擎管理的日志(标准输出/错误流)** 这类日志**不存储在容器内部**,而是由 Docker 引擎捕获并保存在**宿主机文件系统**中: - **存储路径**:`/var/lib/docker/containers/<容器ID>/<容器ID>-json.log` (例如:`/var/lib/docker/containers/d82c4df86dc3.../d82c4df86dc3...-json.log`) - **日志特征**: - JSON 格式存储 - 包含容器的标准输出(stdout)和标准错误(stderr) - 通过 `docker logs` 命令查看的就是这些日志[^1][^5] #### 2. **应用程序生成的日志容器内部文件)** 这类日志容器内应用程序**主动写入文件**,存储位置取决于应用配置: | 日志类型 | 典型存储路径(容器内部) | 示例应用 | |----------------|-------------------------------|---------------| | 系统级日志 | `/var/log/` 目录 | Nginx, MySQL | | 应用自定义日志 | 应用配置的路径(如 `/app/logs`) | Spring Boot | | 数据库日志 | `/var/log/mysql/` 或自定义路径 | MySQL[^3] | --- ### 操作验证步骤 1. **查找宿主机日志文件**: ```bash # 获取容器完整ID docker inspect -f '{{.Id}}' 容器名 # 查看宿主机日志路径(替换实际容器ID) ls /var/lib/docker/containers/d82c4df86dc3.../*.log ``` 2. **查看容器内部日志文件**: ```bash # 进入容器查找日志文件 docker exec -it 容器名 bash find / -name "*.log" 2>/dev/null ``` --- ### 关键区别总结 | **特性** | Docker引擎日志 (`docker logs`) | 应用程序日志文件 | |------------------|--------------------------------------|------------------------| | 存储位置 | **宿主机**特定目录 | **容器内部**文件系统 | | 内容来源 | stdout/stderr 输出 | 应用主动写入文件 | | 持久化方式 | Docker自动管理 | 需挂载卷防止丢失[^3] | | 查看方式 | `docker logs` 命令 | 需进入容器或挂载查看 | --- ### 相关问题 1. 如何在 Docker Compose 中配置容器日志持久化到宿主机? 2. 容器重启后,哪些日志会被保留?哪些会丢失? 3. 如何处理 Docker 容器日志过大导致的磁盘空间问题? 4. 如何实时监控多个容器日志输出? 5. 容器内应用程序如何配置日志轮转策略?
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值