Dockerとコンテナー内の使用可能なリソースの決定



Dockerコンテナにどのくらいのリソースがあるかを説明する方法は?







JavaとDockerの翻訳記事は、私にこの短いメモを書くよう促しました。誰もがこれ知っており、結果に乏しいトピックに関する情報を検索する必要があります。 私は長い間LXCを使用してきましたが、これはまたコンテナリソースをcgroupに制限しますが、この問題はすでにそこで解決されています。









Dockerは、cgroupツールを使用してコンテナーの使用統計と制限を提供します。これは(Debianの)パス/sys/fs/cgroup/



で利用できますが、システムユーティリティtop, free, ps



などを含むすべてのアプリケーションで使用できるわけではありません。 Linux Containersプロジェクトは、 LXCFSを使用してこの問題を回避し、ユーザー環境で次のファイルを提供します。









すべてがLXC 2.xですぐに動作する場合、 dockerにこれを教える必要があります。

私たちが持っている科目:







 Debian jessie 4.6.0-0.bpo.1-amd64 docker Server Version: 1.12.2 lxcfs: 2.0.6-1~bpo8+1
      
      





まず、Debianカーネルはcgroupを使用してメモリを調整し、ブートオプションに追加できるようにする必要があります。







 cgroup_enable=memory swapaccount=1
      
      





そして、対応するサービスを開始するlxcfs



ます。







 # systemctl status lxcfs.service ● lxcfs.service - FUSE filesystem for LXC
      
      





その結果、目的のprocファイルがパス/var/lib/lxcfs/



沿って表示されます。

それらを個別にdockerコンテナーに投入することは残っています。 docker-compose形式では、コンテナファイルは次のようになります。







 CT_name: container_name: CT_name hostname: CT_name image: debian:stable mem_limit: 512m volumes: - /var/lib/lxcfs/proc/meminfo:/proc/meminfo - /var/lib/lxcfs/proc/uptime:/proc/uptime - /var/lib/lxcfs/proc/swaps:/proc/swaps - /var/lib/lxcfs/proc/cpuinfo:/proc/cpuinfo - /var/lib/lxcfs/proc/stat:/proc/stat - /var/lib/lxcfs/proc/diskstats:/proc/diskstats
      
      





そして結果を確認します。







 # docker exec CT_name cat /proc/uptime 247.0 247.0 # docker exec CT_name free -m total used free shared buffers cached Mem: 512 11 500 4322 0 0 -/+ buffers/cache: 11 500 Swap: 512 0 512
      
      





コンテナパラメーターを使用して、記事「Java and Docker:Everyone Should Know It」に記載されているテストを実行します。







 CT_name: container_name: CT_name hostname: CT_name image: rafabene/java-container:openjdk mem_limit: 150m volumes: - /var/lib/lxcfs/proc/meminfo:/proc/meminfo
      
      





 curl http://172.17.0.33:8080/api/memory Allocated more than 80% (73.5 MiB) of the Max allowed JVM memory size (73.5 MiB)
      
      





172.17.0.33



は、コンテナに指定されたIPです。

ご覧のとおり、アプリケーションは発行されたメモリ制限を認識しています。







ご清聴ありがとうございました。








All Articles