Linuxコンテナー:コンテナーがさらにある場合





前の記事で、コンテナー仮想化とは何か、特にLXC、なぜそれが必要なのか、そしてそれを素早くセットアップする方法について簡単に話しました。



使用中、コンテナの数は徐々に増加しています。 同時に、一部は他のクローンのクローンであり、さらにすべてがスナップショットに基づいています。 自然な欲求が生じます:このコンテナ倉庫の管理を容易にすること。









これは、個人のラップトップ上にあるものです。



シェル構成



まず第一に、毎回sudo / suを入力する必要を取り除き、ユーザーの下からLXC管理ユーティリティにアクセスできるようにします。



ここでは、シェルエイリアスを作成するという自然な考えがすぐに生じます。 行われた:



lxc.alias





alias "lxc-monitor=sudo lxc-monitor" alias "lxc-test-saveconfig=sudo lxc-test-saveconfig" alias "lxc-wait=sudo lxc-wait" alias "lxc-config=sudo lxc-config" alias "lxc-test-createtest=sudo lxc-test-createtest" alias "lxc-test-apparmor=sudo lxc-test-apparmor" alias "lxc-test-destroytest=sudo lxc-test-destroytest" alias "lxc-test-containertests=sudo lxc-test-containertests" alias "lxc-unshare=sudo lxc-unshare" alias "lxc-autostart=sudo lxc-autostart" alias "lxc-snapshot=sudo lxc-snapshot" alias "lxc-create=sudo lxc-create" alias "lxc-execute=sudo lxc-execute" alias "lxc-test-shutdowntest=sudo lxc-test-shutdowntest" alias "lxc-freeze=sudo lxc-freeze" alias "lxc-test-get_item=sudo lxc-test-get_item" alias "lxc-test-getkeys=sudo lxc-test-getkeys" alias "lxc-cgroup=sudo lxc-cgroup" alias "lxc-test-attach=sudo lxc-test-attach" alias "lxc-usernsexec=sudo lxc-usernsexec" alias "lxc-test-cgpath=sudo lxc-test-cgpath" alias "lxc-test-snapshot=sudo lxc-test-snapshot" alias "lxc-start-ephemeral=sudo lxc-start-ephemeral" alias "lxc-test-device-add-remove=sudo lxc-test-device-add-remove" alias "lxc-test-concurrent=sudo lxc-test-concurrent" alias "lxc-destroy=sudo lxc-destroy" alias "lxc-test-console=sudo lxc-test-console" alias "lxc-checkconfig=sudo lxc-checkconfig" alias "lxc-test-autostart=sudo lxc-test-autostart" alias "lxc-start=sudo lxc-start" alias "lxc-test-locktests=sudo lxc-test-locktests" alias "lxc-clone=sudo lxc-clone" alias "lxc-test-may-control=sudo lxc-test-may-control" alias "lxc-test-list=sudo lxc-test-list" alias "lxc-test-clonetest=sudo lxc-test-clonetest" alias "lxc-test-lxcpath=sudo lxc-test-lxcpath" alias "lxc-ls=sudo lxc-ls --fancy" alias "lxc-console=sudo lxc-console" alias "lxc-info=sudo lxc-info" alias "lxc-unfreeze=sudo lxc-unfreeze" alias "lxc-test-startone=sudo lxc-test-startone" alias "lxc-device=sudo lxc-device" alias "lxc-test-reboot=sudo lxc-test-reboot" alias "lxc-stop=sudo lxc-stop" alias "lxc-attach=sudo lxc-attach"
      
      









zshとbashの両方に適しています。 有効にするには、ソース/path/to/lxc.aliasを〜/ .bashrcまたは〜/ .zshrcに登録する必要があります。



2つ目は、これらのすべてのコマンドの実行を、パスワードを入力せずに実行する権限で/etc/sudoers.dに登録することです。



/etc/sudoers.d/lxc





 user ALL=(ALL) NOPASSWD: /usr/bin/lxc-autostart user ALL=(ALL) NOPASSWD: /usr/bin/lxc-test-attach user ALL=(ALL) NOPASSWD: /usr/bin/lxc-test-apparmor user ALL=(ALL) NOPASSWD: /usr/bin/lxc-test-concurrent user ALL=(ALL) NOPASSWD: /usr/bin/lxc-usernsexec user ALL=(ALL) NOPASSWD: /usr/bin/lxc-test-destroytest user ALL=(ALL) NOPASSWD: /usr/bin/lxc-clone user ALL=(ALL) NOPASSWD: /usr/bin/lxc-test-shutdowntest user ALL=(ALL) NOPASSWD: /usr/bin/lxc-test-device-add-remove user ALL=(ALL) NOPASSWD: /usr/bin/lxc-test-locktests user ALL=(ALL) NOPASSWD: /usr/bin/lxc-test-clonetest user ALL=(ALL) NOPASSWD: /usr/bin/lxc-test-console user ALL=(ALL) NOPASSWD: /usr/bin/lxc-attach user ALL=(ALL) NOPASSWD: /usr/bin/lxc-config user ALL=(ALL) NOPASSWD: /usr/bin/lxc-test-list user ALL=(ALL) NOPASSWD: /usr/bin/lxc-test-startone user ALL=(ALL) NOPASSWD: /usr/bin/lxc-device user ALL=(ALL) NOPASSWD: /usr/bin/lxc-snapshot user ALL=(ALL) NOPASSWD: /usr/bin/lxc-test-autostart user ALL=(ALL) NOPASSWD: /usr/bin/lxc-test-getkeys user ALL=(ALL) NOPASSWD: /usr/bin/lxc-unfreeze user ALL=(ALL) NOPASSWD: /usr/bin/lxc-test-lxcpath user ALL=(ALL) NOPASSWD: /usr/bin/lxc-test-createtest user ALL=(ALL) NOPASSWD: /usr/bin/lxc-execute user ALL=(ALL) NOPASSWD: /usr/bin/lxc-create user ALL=(ALL) NOPASSWD: /usr/bin/lxc-console user ALL=(ALL) NOPASSWD: /usr/bin/lxc-start-ephemeral user ALL=(ALL) NOPASSWD: /usr/bin/lxc-checkconfig user ALL=(ALL) NOPASSWD: /usr/bin/lxc-info user ALL=(ALL) NOPASSWD: /usr/bin/lxc-destroy user ALL=(ALL) NOPASSWD: /usr/bin/lxc-test-get_item user ALL=(ALL) NOPASSWD: /usr/bin/lxc-test-snapshot user ALL=(ALL) NOPASSWD: /usr/bin/lxc-cgroup user ALL=(ALL) NOPASSWD: /usr/bin/lxc-test-may-control user ALL=(ALL) NOPASSWD: /usr/bin/lxc-test-reboot user ALL=(ALL) NOPASSWD: /usr/bin/lxc-wait user ALL=(ALL) NOPASSWD: /usr/bin/lxc-unshare user ALL=(ALL) NOPASSWD: /usr/bin/lxc-start user ALL=(ALL) NOPASSWD: /usr/bin/lxc-monitor user ALL=(ALL) NOPASSWD: /usr/bin/lxc-test-cgpath user ALL=(ALL) NOPASSWD: /usr/bin/lxc-stop user ALL=(ALL) NOPASSWD: /usr/bin/lxc-test-containertests user ALL=(ALL) NOPASSWD: /usr/bin/lxc-ls user ALL=(ALL) NOPASSWD: /usr/bin/lxc-freeze user ALL=(ALL) NOPASSWD: /usr/bin/lxc-test-saveconfig
      
      









ここで、「ユーザー」はアカウントの名前です。



ローカルDHCPサーバーを構成する





次に私がやりたいことは、コンテナが自動設定でネットワーク設定を受信できるようにすることです。個人の設定を面倒に編集する必要はありません。 少しグーグルで、 この記事に出くわしました



レシピは創造的に再考され、採用されましたが、何かを修正する必要がありました。 正確に言うと、さらに説明します。



最初に行うことは、dhcp-server自体をインストールすることです。



 apt-get install isc-dhcp-server
      
      







私の前回の記事に従って構成した場合、/ etc / network / interfacesに触れる必要はありません。 念のため、どのように見えるか思い出させてください:



/ etc /ネットワーク/インターフェイス





 iface br0 inet static address 172.20.0.1 netmask 255.255.255.0 pre-up /sbin/brctl addbr br0 post-up /sbin/brctl setfd br0 0 post-up iptables -t nat -A POSTROUTING -s 172.20.0.0/24 -j MASQUERADE post-up echo 1 > /proc/sys/net/ipv4/ip_forward pre-down /sbin/brctl delbr br0
      
      









各コンテナの構成を編集する代わりに、グローバルな構成を編集します。



/etc/lxc/default.conf





 lxc.network.type = veth lxc.network.flags = up lxc.network.link = br0 lxc.network.name = eth0
      
      









ゲートウェイ、サブネットマスク、DNS、その他のMACアドレス登録する必要はありません 。 これにより、dhcpサーバーとlxcが生成されます。







isc-dhcpdを構成します。



/ etc / default / isc-dhcp-server



 INTERFACES="br0"
      
      







つまり、dhcpdが機能するインターフェイスを指定するだけです。



ファイル/etc/dhcp/dhcpd.confを開き、サブネットという形式のコメント付きディレクティブを見つけて、以下を追加します。



/etc/dhcp/dhcpd.conf





 subnet 172.20.0.0 netmask 255.255.255.0 { range 172.20.0.10 172.20.0.250; option domain-name-servers 8.8.8.8, 8.8.4.4 ; option routers 172.20.0.1; }
      
      











Google DNSを指定しました。 誰もが、たとえばここから味わうか、自分の地元の味を使用するかを選択できることは明らかです。



まとめ





上記のアクションの結果、コンテナの操作がより快適になります。各コンテナの設定を編集する必要はなく、通常はキーボードから余分な文字を入力します。



今のところすべてです。



All Articles