Elastic Beanstalkを実行しているドッカーコンテナ内のnfs4共有にアクセスできません。Docker nfs4 mount on Elastic Beanstalk
Netshareは、Dockerコンテナを実行しているEC2インスタンスで起動しています。インスタンスに手動でnfs共有をマウントすると、問題なくEC2インスタンスの共有にアクセスできます。
しかし、nfs4ボリュームをマウントしようとするコンテナを実行すると、ファイルはコンテナ内に表示されません。
私はこれを行います。まず、ドッカーホスト上NetShareのデーモンを起動します。
sudo ./docker-volume-netshare nfs
INFO[0000] == docker-volume-netshare :: Version: 0.18 - Built: 2016-05-27T20:14:07-07:00 ==
INFO[0000] Starting NFS Version 4 :: options: ''
その後、ドッカーホスト上で、ドッキングウィンドウコンテナを開始します。 NetShareのデーモンによると、
sudo docker run --volume-driver=nfs -v ec2-xxx-xxx-xxx-xxx.us-west-2.compute.amazonaws.com/home/ec2-user/nfs-share/templates:/home/ec2-user/xxx -ti aws_beanstalk/current-app /bin/bash
[email protected]:/usr/src/app#
が働いた:NFS4シェアをマウントするボリュームを作成するには
-v
を使用し
INFO[0353] Mounting NFS volume ec2-xxx-xxx-xxx-xxx.us-west-2.compute.amazonaws.com:/home/ec2-user/nfs-share/templates on /var/lib/docker-volumes/netshare/nfs/ec2-xxx-xxx-xxx-xxx.us-west-2.compute.amazonaws.com/home/ec2-user/nfs-share/templates
は、だから私は、新たに立ち上げたコンテナ内/home/ec2-user/xxx
の内容をリストしてみてください - しかし、その空の?!
[email protected]:/usr/src/app# ls /home/ec2-user/xxx/
[email protected]:/usr/src/app#
、NFSボリュームがホストに正しくマウントされている:
[[email protected] ~]$ sudo ls -lh /var/lib/docker-volumes/netshare/nfs/ec2-xxx-xxx-xxx-xxx.us-west-2.compute.amazonaws.com/home/ec2-user/nfs-share/templates | head -3
total 924K
drwxr-xr-x 5 ec2-user ec2-user 4,0K 29. Dez 14:12 file1
drwxr-xr-x 4 ec2-user ec2-user 4,0K 9. Mai 17:20 file2
これは権限の問題だろうか? nfsサーバーとクライアントの両方で、ユーザー/グループec2-user
が使用されています。ドッカーコンテナはroot
として実行されています。
私には何が欠けていますか?
UPDATE
私はコンテナが可能となるの内側に直接共有NFSをマウント、--privileged
モードでコンテナを起動した場合:
sudo docker run --privileged -it aws_beanstalk/current-app /bin/bash
mount -t nfs4 ec2-xxxx-xxxx-xxxx-xxxx.us-west-2.compute.amazonaws.com:/home/ec2-user/nfs-share/templates /mnt/
ls -lh /mnt | head -3
total 924K
drwxr-xr-x 5 500 500 4.0K Dec 29 14:12 file1
drwxr-xr-x 4 500 500 4.0K May 9 17:20 file2
は残念ながら、これで問題が解決しない、Elastic Beanstalkであるため特権付きコンテナは許可されません(ECSとは異なります)。ここではUPDATE 2
は、別の回避策です:
- がホスト上
/target
- 再起動]ドッキングウィンドウにホスト上のNFS共有をマウント
- 実行コンテナ
docker run -it -v /target:/mnt image /bin/bash
/mnt
は、期待どおりに作成されました。
ありがとう、これは私にとって素晴らしい仕事でした。私が理解できなかったのはあなたの.config:05restart-ecs: コマンド:docker start ecs-agent "ecs-agent"とは – Neil
https://github.com/aws/amazon-ecsから-agent:「Amazon ECSコンテナエージェントは、Amazon EC2コンテナサービス(Amazon ECS)用に開発されたソフトウェアで、コンテナインスタンス上で動作し、Amazon ECSの代わりにコンテナを起動します。 – sebastian
詳細を追加していただきありがとうございましたmarkplindsay、私はすべてを書き留める時間がかかりませんでした。 – sebastian