ホストディレクトリのmount
MacOSなどのホストディレクトリにコンテナからアクセスするには、起動時の--mount
オプションが手軽です。
$ minikube start --mount --mount-string /path/to/localDir:/minikube_dir
minikubeのアーキテクチャは、ホストPC / minikube VM / コンテナOSの3層構造になっており、コンテナ起動時のvolumes.hostPath
設定ではminikubeVMのPathを参照します。
複数のPathを参照する場合、--mount-string
には最上位のディレクトリを1つ指定するため、ディレクトリ構成を工夫することが事実上必要になりそうです。
ホストディレクトリの参照を確認したい場合には、minikube ssh
コマンドでminikube VMのレイヤにログインできるため、この環境でls
すると良いでしょう。
ただし、
Directories provisioned by hostPath provisioner are only writeable by rootが現状オープンであるとおり、minikubeのhostPathはパーミッション設定に難があります。
マウントしたディレクトリ内のファイルオーナーのUID, GIDがホストの番号になっているため、コンテナ上のUIDと一致しないのです。
コンテナ上のプロセスがrootであればファイルパーミッションを超越して読み書き可能ですが、DBMSなど一般ユーザーによる書き込みの必要なvolumeの利用ケースでホストOS上にファイルを置きたい場合、まだ適切なサポートがない状況のようです。
※ minikube VM上にファイルを置く構成であればコンテナ起動時にsecurityContext.privileged: true
を指定すると動作します。minikube VM上のファイルオーナーがコンテナ上のUIDになります。
minikubeのVM設定
minikubeの起動時デフォルト設定は、minikube config
で設定可能で、~/.minikube/config/config.json
に記録されています。
config.jsonに記録された設定はminikube config view
で確認でき、minikube start
のオプション指定を省略可能です。
$ minikube config set memory 8192
$ minikube config set cpus 2
These changes will take effect upon a minikube delete and then a minikube start
minikube v0.26.0以前では、vm-driverオプションがhyperkitをサポートしておらず、setするとエラーになりますが、~/.minikube/config/config.json
に直接記載すると機能します。
プロファイル切り替え
minikubeはprofile機能を通じて、独立した環境を提供しています。
minikube start -p profile_name
でプロファイルを切り替え可能です。オプション無指定時のデフォルトプロファイル名はminikubeです。
プロファイル別の設定は、~/.minikube/profiles/
にあります。
ただし、minikube v0.26.0で確認した範囲では、プロファイルを指定すると一度も起動しない、という事象に遭遇しています。
クラッシュ後に起動しなくなった際のリセット方法
特定のプロファイルがクラッシュした後に起動しなくなった場合、ホスト仮想マシンのイメージが破損していることがあります。
プロファイル別の仮想マシンイメージは~/.minikube/machines
ディレクトリにプロファイル別にあります。
不調なイメージのディレクトリをリネーム(完全に不要ならminikube delete
で削除)すると、次回そのプロファイルでminikube start
した際にイメージ新規作成から開始します。
Chuma Takahiro