WindowsのDocker Toolboxで作ったコンテナ内でシンボリックリンクを作ろうとすると、「プロトコルエラー」と言われてしまった。
Docker内
ln -s /path/to/distination ./link_name
ln: failed to create symbolic link ‘link_name’: プロトコルエラー
Windowsのフォルダにマウントしたディレクトリ内にリンクを作ろうとしているため、どうやらWindowsとLinuxのファイルシステムの違いによりリンクが作成できないらしい。
そこでWindows側でコマンドプロンプトを使用し、シンボリックリンクを作りたいフォルダでmklinkコマンドを実行する。
- コマンドプロンプトを管理者権限で起動するとmklinkコマンドが使える。
-
ln -s
とmklink /D
はほぼ同じ動きだが、リンク名とリンク先の順番が逆なので注意する。 - リンク先はdokcer内のパスをダブルクォーテーション("")で囲んで指定する。
Windowsコマンドプロンプト
mklink /D link_name "/path/to/distination"
link_name <<===>> /path/to/distination のシンボリック リンクが作成されました
Docker側で確認するとマウントしたディレクトリにシンボリックリンクが作成されている。
Docker内
ll link_name
lrwxrwxrwx 1 1000 ftp 0 5月 15 12:07 link_name -> /path/to/distination
追記
今回作成したシンボリックリンクはsvnにコミットできなかった。
gitでも同じと思われる。