よく聞かれる質問 (FAQ)#
以下のセクションは、よくある質問への回答を提供します。 それらは一般的な問題の解決方法を説明し、より詳細な情報へと導きます。
なぜ私のインスタンスはネットワークアクセスがないのですか?#
最も可能性が高いのは、あなたのファイアウォールがインスタンスのネットワークアクセスをブロックしているためです。 問題とその修正方法についての詳細は ファイアウォールを設定するには をご覧ください。
接続問題の別の一般的な原因は、LXDとDockerを同じホスト上で実行していることです。 このような問題を修正する方法については LXD と Docker の接続の問題を回避する を参照してください。
LXDサーバーをリモートアクセス可能にするにはどうすればよいですか?#
デフォルトでは、LXDサーバーはネットワークからアクセスできません。なぜなら、それはローカルのUnixソケットでしかリッスンしていないからです。
リモートアクセスを可能にするためには、 LXDをネットワークに公開するには の指示に従ってください。
lxc remote add
を行うと、パスワードまたはトークンを求められるのはなぜですか?#
リモートAPIにアクセスするためには、クライアントはLXDサーバーに対して認証を行わなければなりません。
リモートサーバーがどのように設定されているかにより、サーバーが発行したトラストトークンを提供するか、トラストパスワードを指定する必要があります(core.trust_password
が設定されている場合)。
トラストトークンを使用して認証する方法については LXDサーバーでの認証 を、他の認証方法については リモートAPI認証 を参照してください。
私はなぜ特権コンテナを実行すべきではないのですか?#
特権コンテナは、ホスト全体に影響を与えることができます - 例えば、/sys
内のものを使ってネットワークカードをリセットすると、ホスト全体のそれがリセットされ、ネットワークが一時的に断線します。
詳細は コンテナのセキュリティ をご覧ください。
ほとんどのものは非特権コンテナで実行できます。また、NFSファイルシステムをコンテナ内にマウントしたいなど、通常とは異なる特権を必要とするものの場合、バインドマウントを使用する必要があるかもしれません。
ホームディレクトリをコンテナにバインドマウントすることはできますか?#
はい、それはディスクデバイスを使用することで可能です:
lxc config device add container-name home disk source=/home/${USER} path=/home/ubuntu
非特権コンテナの場合、コンテナ内のユーザーが適切な読み書き権限を持っていることを確認する必要があります。
そうでないと、すべてのファイルはオーバーフローUID/GID(65536:65536
)として表示され、ワールドリーダブルでないものへのアクセスは失敗します。
必要な権限を付与するために以下の方法のいずれかを使用してください:
lxc config device add
呼び出しにshift=true
を渡します。これは、カーネルとファイルシステムがidmappedマウントまたはshiftfsをサポートしているかどうかに依存します(lxc info
を参照)。raw.idmap
エントリを追加します(ユーザー名前空間のIdmapsを参照)。ホームディレクトリに再帰的なPOSIX ACLを配置します。
特権コンテナはこの問題を持っていません、なぜならコンテナ内のすべてのUID/GIDは外部と同じだからです。 しかし、それが特権コンテナのセキュリティ問題のほとんどの原因でもあります。
LXDコンテナ内でDockerを実行する方法は?#
LXDコンテナ内でDockerを実行するためには、コンテナのsecurity.nesting
プロパティをtrue
に設定します:
lxc config set <container> security.nesting true
LXDコンテナはカーネルモジュールをロードできないため、Dockerの設定によっては、ホストで追加のカーネルモジュールをロードする必要があるかもしれません。 コンテナが必要とするカーネルモジュールのカンマ区切りのリストを設定することでこれを行うことができます:
lxc config set <container_name> linux.kernel_modules <modules>
さらに、コンテナ内に/.dockerenv
ファイルを作成すると、Dockerがネストした環境で実行されているために発生するいくつかのエラーを無視するのに役立ちます。
LXDクライアント(lxc
)は設定をどこに保存しますか?#
lxc
コマンドはその設定を~/.config/lxc
に保存します。Snapユーザーの場合は~/snap/lxd/common/config
に保存します。
様々な設定ファイルがそのディレクトリに保存されます。例えば:
client.crt
:クライアント証明書(要求に応じて生成されます)client.key
:クライアントキー(要求に応じて生成されます)config.yml
:設定ファイル(remotes
、aliases
などの情報)servercerts/
:remotes
に関連するサーバー証明書が保存されているディレクトリ
なぜ私は他のホストからLXDインスタンスにpingを送ることができないのですか?#
多くのスイッチはMACアドレスの変更を許可せず、不正なMACを持つトラフィックをドロップするか、ポートを完全に無効にするかします。 ホストからLXDインスタンスにはpingを送ることができますが、異なるホストからpingを送ることができない場合、これが原因である可能性があります。
この問題を診断する方法は、アップリンク上でtcpdump
を実行することで、ARP Who has `xx.xx.xx.xx` tell `yy.yy.yy.yy`
が表示され、レスポンスを送信しているにもかかわらず確認されていない、またはICMPパケットが成功裏に送受信されているにもかかわらず、他のホストには受け取られていないことを確認することです。
LXDが何をしているかモニターするには?#
LXDが何をしているかとどんなプロセスが稼働しているかについての詳細な情報を見るには、lxc monitor
コマンドを使用します。
例えば、全てのタイプのメッセージの出力を人間が見やすい形式で表示するには、以下のコマンドを使用します。
lxc monitor --pretty
全てのオプションについてはlxc monitor --help
を、より詳しい情報はLXDをデバッグするにはを参照してください。
インスタンス作成時にLXDが止まってしまうのはなぜですか?#
ストレージプールの空きが無くなってないか(lxc storage info <pool_name>
を実行して)確認してください。
空きが無い場合、LXDはイメージの解凍ができず、作成しようとしているインスタンスは止まったままに見えます。
何が起きているかをより詳しく調べるにはlxc monitor
を実行し(LXDが何をしているかモニターするには?参照)、sudo dmesg
で何かI/Oエラーが起きていないか確認してください。