南瓜慢说官方网站

  • 首页
  • 文章汇总
  • 容器技术
  • SpringBoot-Cloud
  • 程序人生
  • 其它
  • 整理
  • 关于

  • 搜索
中间件 config Go Private Kubernetes pkslow Test HTTPS Redis Docker Mac 计划 Stream MongoDB Spring DevOps JVM String Map Set List 性能 Email Springboot 集合类 ArrayList Java
技术之前,先读诗书:

如何把文件放进Docker或Kubernetes中,如何拷贝出来

发表于 2020-08-15 | 分类于 容器技术 | 0 | 阅读次数 392

1 前言

在有些场景,我们需要把外部的文件放到Docker容器中,或者Kubernetes的Pod中去,让应用去读取数据。

2 Docker

(1)从宿主复制文件到Docker容器:

$ docker exec 6619ff360cce ls /opt/h2-data
pkslow.mv.db


$ docker cp pkslow/pkslow.txt 6619ff360cce:/opt/h2-data

$ docker exec 6619ff360cce ls /opt/h2-data
pkslow.mv.db
pkslow.txt

上面例子成功把pkslow.txt复制到了容器的opt/h2-data目录上。

(2)从宿主复制目录到Docker容器:

$ docker cp pkslow 6619ff360cce:/opt/h2-data

$ docker exec 6619ff360cce ls /opt/h2-data
pkslow
pkslow.mv.db
pkslow.txt

$ docker exec 6619ff360cce ls /opt/h2-data/pkslow
pkslow.txt

(3)从容器复制文件或目录到宿主机器:

$ rm -rf pkslow/
$ docker cp 6619ff360cce:/opt/h2-data/pkslow ./
$ docker cp 6619ff360cce:/opt/h2-data/pkslow/pkslow.txt ./

3 Kubernetes

(1)从客户端复制文件或目录到Pod:

$ kubectl cp pkslow.txt h2-db-5967bf999f-8qr87:/opt/h2-data
$ kubectl exec h2-db-5967bf999f-8qr87 ls /opt/h2-data
pkslow.mv.db
pkslow.txt

$ kubectl cp pkslow h2-db-5967bf999f-8qr87:/opt/h2-data
$ kubectl exec h2-db-5967bf999f-8qr87 ls /opt/h2-data
pkslow
pkslow.mv.db
pkslow.txt

(2)当要从Pod复制文件回来就有点不一样:

# 目标目录要指定,与源文件类型匹配
$ kubectl cp default/h2-db-5967bf999f-8qr87:/opt/h2-data/pkslow ./pkslow
tar: Removing leading `/' from member names
# 目标文件要指定,与源文件类型匹配
$ kubectl cp default/h2-db-5967bf999f-8qr87:/opt/h2-data/pkslow.txt ./pkslow.txt

default为namespace,可以指定。

指定Pod的源文件复制目录时,如果以/开头,会有以下日志,但实际也会成功复制:

tar: Removing leading `/' from member names

4 总结

对于Docker可以通过mount一个宿主目录来实现文件共享,这样会方便一些。或者Docker内部启动一个ftp服务,再把文件传进去。

而对于Kubernetes就比较麻烦,可以创建一个共享的pvc挂在固定的一个Pod里,然后通过kubectl cp来实现文件共享,这样其它Pod可以通过挂共享的pvc实现数据访问。


参考文档:kubectl cp


欢迎关注微信公众号<南瓜慢说>,将持续为你更新...

file

推荐阅读:
如何制定切实可行的计划并好好执行
容器技术(Docker-Kubernetes)
SpringBoot-Cloud相关
Https专题

  • 本文作者: 南瓜慢说
  • 本文链接: https://www.pkslow.com/archives/docker-kubernetes-copy-files
  • 版权声明: 本博客所有文章除特别声明外,不可转载!
# 中间件 # config # Go # Private # Kubernetes # pkslow # Test # HTTPS # Redis # Docker # Mac # 计划 # Stream # MongoDB # Spring # DevOps # JVM # String # Map # Set # List # 性能 # Email # Springboot # 集合类 # ArrayList # Java
中间件 config Go Private Kubernetes pkslow Test HTTPS Redis Docker Mac 计划 Stream MongoDB Spring DevOps JVM String Map Set List 性能 Email Springboot 集合类 ArrayList Java
使用Spring Cloud Config统一管理配置,别再到处放配置文件了
Java从网上下载文件的几种方式
  • 文章目录
  • 站点概览
南瓜慢说

南瓜慢说

多年Java开发,主要专注后端技术:Java/Spring/Springboot/微服务/大数据等。

多读书,多分享;多写作,多整理。

160 日志
7 分类
27 标签
RSS
0%
© 2020 — 2021 南瓜慢说 本站已挣扎运行:   粤ICP备20036375号