コンテナにSSHFをマウントするには、fstabを読んでください。

コンテナにSSHFをマウントするには、fstabを読んでください。

私はDockerを使ってイメージを作成し、openjdk:8-jdk-alpine sshfs + fusionを使ってリモートフォルダをマウントしようとしています。そのためにコンテナを実行します。docker run -d --rm --device /dev/fuse --privileged my_container

Dockerfileのコードに次の行を追加しました。

RUN echo "sshfs#myuser@${host}:${folder} $mount_folder fuse allow_other,default_permissions,umask=0007,idmap=file,uidfile=/etc/sshfs_umap,gidfile=/etc/sshfs_gmap,nomap=ignore,StrictHostKeyChecking=no,IdentityFile=/root/.ssh/id_rsa   0       0" >> /etc/fstab

この行は、デフォルトでsshfsを使用してリモートフォルダを/ etc / fstabにマウントするコマンドを追加します。コンテナにアクセスするとファイルは表示されませんが、mount_folder手動で実行すると

$mount -a

フォルダが正常にマウントされました。コンテナの起動時にどのように自動的にインストールできますか?

ベストアンサー1

次のDockerfile実行コマンドを実行する代わりに動作させました。

RUN echo "sshfs#myuser@${host}:${folder} $mount_folder fuse allow_other,default_permissions,umask=0007,idmap=file,uidfile=/etc/sshfs_umap,gidfile=/etc/sshfs_gmap,nomap=ignore,StrictHostKeyChecking=no,IdentityFile=/root/.ssh/id_rsa   0       0" >> /etc/fstab

これを削除し、.shスクリプトを実行し、次の行を含むdockerfileにCMDコマンドを追加しました。

#!/bin/sh
sshfs -o allow_other -o reconnect -o default_permissions -o 'umask=0007' -o 'idmap=file' -o 'uidfile=/etc/sshfs_umap' -o 'gidfile=/etc/sshfs_gmap' -o 'nomap=ignore' -o 'StrictHostKeyChecking=no' -o 'IdentityFile=/root/.ssh/id_rsa' myuser@$SFTP_HOST:$SFTP_ROOT_FOLDER /myfolder

#do tother things here to run your app

リモートファイルシステムは、Dockerコンテナが実行されるたびにマウントされます。 /etc/fstabが実行されていないのは、おそらくコンテナなので、実際には最初から始まっていないからです。したがって、/ etc / fstabは実行されません。

おすすめ記事