【问题标题】:Docker exec command to create a fileDocker exec 命令创建文件
【发布时间】:2021-08-22 23:57:42
【问题描述】:

0

我正在尝试运行此命令并收到错误:

docker exec 19eca917c3e2 cat "你好" > /usr/share/ngnix/html/system.txt

/usr/share/ngnix/html/system.txt: 没有那个文件或目录

一个非常简单的命令来创建一个文件并在其中写入,我尝试了 echo 并且那个也不起作用。

【问题讨论】:

  • (您的意思是使用 Dockerfile COPY 指令在可重用映像中创建文件?)

标签: docker docker-compose dockerfile docker-swarm docker-registry


【解决方案1】:

我认为您正在尝试在容器中创建文件。

您遇到了几个问题,@Yatharth Ranjan 已经解决了其中一个问题 - 您希望 echo 而不是 cat 用于该用途。

另一个是,您的调用正在被本地 shell 解析,在您的主机系统上将其分解为 docker ... "hello world"> ... system.txt

要将管道放入要在容器中执行的文件,您需要在容器中显式调用 bash,然后将命令传递给它:

docker exec 12345 /bin/sh -c "echo \"hello world\" > /usr/somefile.txt"

所以,在这里你可以在容器中调用 /bin/sh,传递给它 -c 告诉它后面有一个 shell 命令,然后解析和执行的命令就是你的echo "hello world" > the_file.txt

当然,将文件复制到容器中的一种更简单的方法是将它们放在您的主机系统上,然后使用 docker cp 复制它们:(其中 0123abc 是您的容器名称或 id)

docker cp ./some-file.txt 01234abc:/path/to/file/in/container.txt

【讨论】:

    【解决方案2】:

    cat 命令只对文件有效,所以cat "Hi there" 不正确。

    尝试echo "Hi there" 将其输出到标准输出。

    然后您将输出传送到/usr/share/ngnix/html/system.txt。确保目录/usr/share/ngnix/html/ 存在。如果不使用创建它

    mkdir -p /usr/share/ngnix/html
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-04-28
      • 1970-01-01
      • 2015-06-07
      • 2016-03-30
      • 1970-01-01
      • 2018-11-17
      • 1970-01-01
      • 2023-03-23
      相关资源
      最近更新 更多