コンテナーが更新されたコードを取得できるように、実行中のコンテナー内にgithub pullスクリプトを作成しました。しかし、このスクリプトをホストマシンからどのように呼び出すことができますか?
私はこのようなもので試しましたが、成功しませんでした。
lxc exec container-name -- gitPull.sh
lxc exec container-name --sh -c "cd ~ && ll"
また、ホストからlxdコンテナにディレクトリをプッシュしようとしましたが、サブディレクトリをコンテナにコピーしません。
誰か助けてもらえますか?
どうもありがとう!
Ubuntuコンテナでlxc exec
を実行すると、ルートシェルが取得され、ホームディレクトリは/root
になります。
非ルートアカウント(ubuntu:18.04
のubuntu
など)を使用している場合は、次のコマンドでそのアカウントにシェルを取得できます。
lxc exec mycontainer -- Sudo --login --user ubuntu
また、ユーザーubuntu
としてコマンドを実行する場合は、次のことができます。
$ lxc exec mycontainer -- Sudo --login --user ubuntu whoami
ubuntu
lxc exec container-name --sh -c "cd ~ && ll"
にタイプミスがあります。 --
はホストのシェルに対する特別な指示であり、--
コマンドはlxc exec
のオプションとして後続のオプションの読み取りを停止する必要があるため、lxc exec
の後にスペースが必要です。たとえば、-l
オプションは、コンテナで実行するコマンドとして逐語的に与えられるのではなく、lxc exec
によって処理されるため、次の例は間違っています。
$ lxc exec mycontainer ls -l
Error: unknown shorthand flag: 'l' in -l
正しいだろう
$ lxc exec mycontainer -- ls -l
実行することにより、ホストからコンテナにディレクトリをプッシュできます
$ lxc file Push --recursive /home/myusername/myfiles/ mycontainer/home/ubuntu/
ホスト上のディレクトリツリー/home/myusername/myfiles/
は、(既存の)ディレクトリ/home/ubuntu/
(そのコンテナ内)のコンテナmycontainer
にコピーされます。