何か試したい製品があるときは、まずDocker Hubで公開されているイメージを検索してdocker runするのが当たり前になってきました。
気楽に起動できるのは良いですが、自分なりに注意している点があるので、記事にしました。
※下記の記事を大いに参考にさせていただきました。
「2016-06-07 Dockerは危険という誤解と、本当に注意すべき点」
http://paiza.hatenablog.com/entry/2016/06/07/Docker%E3%81%AF%E5%8D%B1%E9%99%BA%E3%81%A8%E3%81%84%E3%81%86%E8%AA%A4%E8%A7%A3%E3%81%A8%E3%80%81%E6%9C%AC%E5%BD%93%E3%81%AB%E6%B3%A8%E6%84%8F%E3%81%99%E3%81%B9%E3%81%8D%E7%82%B9
注意点
docker run の --privileged オプション
docker run コマンドのオプションで、 --privileged
を指定すると、コンテナからホスト側のすべてのデバイスへのアクセスが許可されます。
ホストのマシンを制御する必要があるアプリケーションは、そう多くない(と思います)ので、privilegedを要求される場合は、要注意。
docker run の -v オプション
-v オプションで、ホスト側のディレクトリがコンテナ側に共有されます。コンテナ側はroot権限なので、共有されたボリュームを自由に読み書きできます。
このオプション自体は便利ですし、頻繁に使うのですが「何を共有するか?」が、注意点です。
例えば「$HOME」を共有すると、自分のクレデンシャル(AWSのAPIKEYやSSH KEYなど)や、コマンドのHistoryなどが、コンテナ側に共有されます。
また「docker.sock」を共有すると、コンテナ側からDockerを制御できるようになります。
「/」を共有すると・・・(以下割愛)
ボリュームの共有は、必要最小限にしましょう。
心配な時の判断材料
よく分からない・心配だからというだけで、排除するのも良くないので、以下の方法で情報を拾って判断してます。
Official イメージか?
Docker Hub のOfficialイメージなら、まぁ大丈夫(と思う)
Dockerfileを確認する
Dockerfileが公開されているなら、イメージの内容を簡単に調べる事が出来ます。
Fromイメージは何を使っているか?どんなアプリをインストールしているか?を確認します。
Automation Buildか?
Githubで、公開されているDockerfileから自動ビルドされている。⇒ イメージの透明性が高い(と思います)ので、ちょっと安心。
補足
あくまで「判断材料」ということでお願いします。
「他にもこんな事にも注意した方が良いよ」というコメントも大歓迎です。