докер: не удается передать эхо в файл

#bash #docker

Вопрос:

Я не понимаю, почему это работает:

 admins3:~ admin$ docker exec -it xenodochial_aryabhata cat  /opt/source-code/deleteme.txt
test
 

Но это не так:

 admins3:~ admin$ docker exec -it xenodochial_aryabhata echo 'why' >>  /opt/source-code/deleteme.txt
-bash: /opt/source-code/deleteme.txt: No such file or directory
 

В случае, если это поможет, вот как выглядят разрешения:

 admins3:~ admin$ docker exec -it xenodochial_aryabhata ls -lah /opt/source-code
total 108K
drwxrwxrwx 1 root root 4.0K Jun  7 20:50 .
drwxr-xr-x 1 root root 4.0K Jun  7 20:13 ..
-rwxrwxrwx 1 root root  860 Jun  7 20:12 Dockerfile
-rwxrwxrwx 1 root root  677 Jun  3 19:44 README.md
-rwxrwxrwx 1 root root    6 Jun  7 20:09 deleteme.txt
-rwxr-xr-x 1 root root  419 Jun  7 20:36 ext.ps1
 

Комментарии:

1. >> В вашем втором примере интерпретируется bash на вашем хосте. Не (как вы, вероятно, предполагали) оболочкой внутри контейнера docker. Вам нужно сделать sh -c "echo 'why' >> /opt/source-code/deleteme.txt" что-то вроде команды.