構築中のdockerの環境を、サービスイン前にupdateすることを検討しています。
環境は以下の通りです。
・DockerホストOS:RHEL 7.7
・現行Docker version:1.13.1-108(rhel-7-server-extras-rpms)
・Update予定のDocker version:1.13.1-161(rhel-7-server-extras-rpms上の最新)
・カーネル:3.10.0-1062.9.1.el7.x86_64
・dockerhub上のzabbix関連のコンテナをfromとして、簡単な変更を加えたイメージを利用
・docker-composeで停止・起動させるように構成
updateを検討とはじめに記載しましたが、VM環境上に立てているサーバーのため、事前にスナップショットを取得した上で、実際にupdateを行いコンテナの起動を試したのですが、フロントのコンテナ(Apache)の起動に失敗していまいます。
ログの確認の結果
・dockerhubから落としてきたコンテナのイメージを、ホストOSからのユーザー識別を一致させるために、コンテナ上のユーザーIDのUIDを変更した
・セキュリティの観点から、起動ユーザーをrootからapacheに変更
→起動時に、複数ファイルへのアクセス権がない(ベースイメージに含まれている各ファイルの所有が変更前のUIDのままになってしまっているため、起動ユーザーapacheが権限がないためアクセス不可)ため起動に失敗しているようです。
ただ、原因がそうであるならこの問題は現行のバージョンで発生しない方が不思議な事象であると思うので、dockerのリリースノートを確認してみたのですが、そこまでの細かいバージョンの更新については触れられていませんでした。
もし、細かいバージョンの更新情報等記載されているページをご存知の方がいらっしゃいましたら、ご教示いただきたく。
また、合わせて根本的な問題の解決方法も質問させて下さい。
この問題は、ベースイメージに含まれているユーザーIDのUIDを、もともと作成したいUID指定で作成すれば、発生しない問題だと思っています。そのため、dockerhubで公開されているイメージをビルドするためのDockerfileをUIDが指定のものでユーザーIDを作成するようにすれば良い理解です。これを試してみたのですが、Dockerfileに含まれる--from=builderが、今使っているdockerのバージョンで対応していないようで失敗しました。
こちらについても、根本的にパーミッションの問題を回避する方法(ファイルの所有を変えてしまう、など別の切り口でも問題ありません)をご存知でしたら、教えて下さい。