Kubernetes/使用文档/Kubernetes拷贝文件.md
offends 7a2f41e7d6
All checks were successful
continuous-integration/drone Build is passing
synchronization
2024-08-07 18:54:39 +08:00

95 lines
1.7 KiB
Markdown

> 本文作者:丁辉
# Kubernetes 拷贝文件
## 拷贝容器内文件到本地
### 方法一
**使用 kubectl cp 拷贝**
```bash
kubectl -n 命名空间 cp 容器名:/容器内文件路径 ./拷贝到本地文件名
```
> 示例:
>
> ```bash
> kubectl -n test cp nginx-6db97db958-zrb7r:etc/nginx/nginx.conf ./nginx.conf
> ```
>
> **执行命令提示**
>
> ```bash
> tar: Removing leading `/' from member names
> ```
>
> 这是在提示你在 `kubectl -n 命名空间 cp 容器名:<这里开头不用加 "/" >`
### 方法二
**寻找到本地 Docker 持久化存储 拷贝文件到本地**
- 获取容器 ID
```bash
CONTAINER_ID=$(kubectl -n 命名空间 describe pod 容器名 | grep "Container ID:" | awk -F '/' '{print $3}')
```
> 示例:
>
> ```bash
> CONTAINER_ID=$(kubectl -n test describe pod nginx-6db97db958-zrb7r | grep "Container ID:" | awk -F '/' '{print $3}')
> ```
- 获取存储路径
```bash
docker inspect -f '{{.GraphDriver.Data.UpperDir}}' $CONTAINER_ID
```
### 方法三
- 获取容器名称
```bash
kubectl -n 命名空间 describe pod 容器名 | grep "Containers:" -A 1
```
> 示例:
>
> ```
> kubectl -n test describe pod nginx-6db97db958-zrb7r | grep "Containers:" -A 1
> ```
- 寻找 Docker 容器
```bash
docker ps | grep 容器名称
```
- 拷贝容器内文件
```bash
docker cp 容器名称:/容器内路径 ./本地路径
```
## 拷贝本地文件到容器内
**使用 kubectl cp 拷贝**
```bash
kubectl -n 命名空间 cp ./本地文件名 容器名:/容器内路径
```
> 示例:
>
> ```bash
> kubectl -n test cp ./default.conf nginx-6db97db958-zrb7r:/etc/nginx/conf.d/
> ```