前回の記事からの続きです。
今回は、Dockerホストのディレクトリの権限を変更し、
コンテナ側からアクセスすることができるのかを確かめてみます。
■前提
Dockerコンテナ(apache2サーバ)を起動する際のdocker runコマンドは
以下の通りです。
docker run -itd --name apache2 -v /var/tmp/apache2:/usr/local/apache2/htdocs -p 8082:80 httpd:2.4
■検証の流れ
1.Dockerホストの/var/tmp/apache2ディレクトリをパーミッションXXX(※)で作成します。
2.apache2コンテナで上記1をマウントして起動します。
3.ブラウザからアクセスできるかを確認します。
※ 上記1のパーミッションは700、750、755の3パターンでやってみます。
■検証1:apache2ディレクトリのパーミッションが700の場合
結果: ディレクトリにアクセス出来ず、index.htmlが読み取れなかった。
■検証2:apache2ディレクトリのパーミッションが750の場合
結果: ディレクトリにアクセス出来ず、index.htmlが読み取れなかった。
■検証3:apache2ディレクトリのパーミッションが755の場合
結果: ディレクトリにアクセス出来た!!
■結論
Dockerホストにて、マウント対象ディレクトリ(この記事の場合、/var/tmp/apache2)にパーミッションOtherに読み取り権限が付与されている必要があります。
■コンテナ側から見るとどうなっているのか
コンテナ側からディレクトリ権限を見た場合を記載しております。
■検証1:Dockerホストのapache2ディレクトリのパーミッションが700の場合
結果: コンテナ側のディレクトリも700になります。なのでブラウザからアクセスできません。
検証2,3については想像がつくと思うので割愛します。
※Dockerホスト側に連動して、パーミッションが変動します。
■コンテナ側から権限変更するとどう見えるのか
コンテナ側からディレクトリ権限を変更してみます。
念のため、Dockerホスト側も見てみます。
Dockerホストでも755に変更されていることが確認できます。
ブラウザからアクセスも可能です。
結論:Dockerホストからでもコンテナ側からでも権限の変更可能
以上です。