【Docker】之容器文件的上传和下载

这篇博客介绍了如何使用Docker进行文件上传和下载,包括`dockercp`命令的使用,以及如何通过`dockerexec`命令进入容器执行bash命令。这些技巧对于日常的Docker容器管理和开发工作至关重要。
摘要由CSDN通过智能技术生成

1、上传文件到容器


上传命令:

docker cp [OPTIONS] SRC_PATH CONTAINER:DEST_PATH 

参数说明:

  • OPTIONS: 可选参数为 -L,表示保持源目标中的链接;
  • SRC_PATH:为主机中要上传到容器的文件路径;
  • CONTAINER:为容器ID容器名称
  • DEST_PATH:为要存放上传文件的容器路径;

例如: docker cp /home/temp.txt redis:/data/ 表示上传主机目录为 /home/temp.txt 的文件到 redis 容器的 /data/ 路径下。


2、从容器中下载文件


下载命令为:

docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH

参数说明:

  • OPTIONS: 可选参数为 -L,表示保持源目标中的链接;
  • CONTAINER:为容器ID容器名称
  • SRC_PATH:为容器的文件路径;
  • DEST_PATH:为存放下载文件的主机目录路径;

比如: docker cp redis:/data/temp.txt /home/ 表示下载 redis 容器中路径为 /data/temp.txt 的文件到主键目录 /home/ 中。


3、进入容器中执行命令


Docker 容器相当于一个小型的 Linux 系统,我们可以在里面执行 bash 命令。

语法命令:

docker exec [OPTIONS] CONTAINER CONMAND [ARG...] 

参数说明:

  • OPTIONS:可选项参数,常用参数如下:
    • -d:分离模式,在后台运行;
    • -i:及时没有附加也保持 STDIN 打开;
    • -t:分配一个伪终端;
  • CONTAINER:为容器ID容器名称
  • CONMAND:执行(exec)容器的命令;
  • ARG:执行命令的可选参数;

实例:

在容器中以交互模式执行容器内的脚本:

[andy@local ~]$ docker exec -it redis /bin/bash /data/temp.sh
hello world!

在容器中开启一个交互模式的终端:

[andy@local ~]$ docker exec -it redis /bin/bash
andy@fd2a88f2a1e7:/data$ ls

进入容器之后就可以执行 bash 命令了。

  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用Docker运行Java应用程序时,可能需要将文件上传容器的主目录(/home)中。通常可以使用docker cp命令将文件从主机复制到容器中,但在某些情况下,如果需要实现自动化,则需要将该过程包含在脚本或应用程序中。 一个简单的解决方案是使用Java的标准类库中的FileInputStream和FileOutputStream类。假设我们有一个名为file.txt的文件,位于主机中的/home/user/目录下。在Docker容器中,可以使用以下代码将该文件复制到容器中的/home/目录: ```java import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; public class FileCopy { public static void main(String[] args) { String source = "/home/user/file.txt"; String destination = "/home/file.txt"; try (FileInputStream fis = new FileInputStream(source); FileOutputStream fos = new FileOutputStream(destination);) { byte[] buffer = new byte[1024]; int length; while ((length = fis.read(buffer)) > 0) { fos.write(buffer, 0, length); } } catch (IOException e) { e.printStackTrace(); } } } ``` 通过调用FileInputStream和FileOutputStream类的构造函数,可以将源文件和目标文件的路径传递给它们。然后,在while循环中,逐个字节地将源文件的内容写入目标文件中。 请注意,此解决方案依赖于Java类库而不是Docker命令。因此,它可以在任何支持Java的操作系统上运行,并且可以应用于从其他位置到/home目录的任何文件的复制过程。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值