【发布时间】:2024-01-22 12:58:01
【问题描述】:
我正在尝试使用docker exec 将字符串附加到 docker 容器中的文件。但是,它似乎没有正确解释“>>”运算符
sudo docker exec --interactive mycontainer cat /etc/postfix/main.cf
返回
smtpd_banner = $myhostname ESMTP $mail_name (Debian)
biff = no
append_dot_mydomain = no
readme_directory = no
# Basic configuration
# myhostname =
...
但是
sudo docker exec --interactive mycontainer echo "my new line" >> /etc/postfix/main.cf
返回-bash: /etc/postfix/main.cf: No such file or directory
无论哪种方式,都有一个技巧可以将“>>”运算符传递给 docker-exec,或者有另一个命令可以将字符串附加到文件中(这也可以,但我找不到那个是原生的,因为容器没有任何花哨的库)。
有人有窍门吗?
【问题讨论】:
-
糟糕,抱歉,会解决这个问题
-
你需要在 docker 中运行一个 shell 来解释操作符。
echo不是外壳。改为运行bash之类的东西,然后在其中执行echo。 -
@ArthurAttout 你需要为命令提供 bash 类型和 -c 选项,试试这个应该可以工作
sudo docker exec -i -t mycontainer /bin/bash -c 'echo my new line>>/etc/postfix/main.cf'
标签: docker append operators docker-exec