投稿

8月, 2017の投稿を表示しています

オライリーのDocker本を読んだり色々な記事を読んだりしたので自分なりにまとめる(Dockerfileについて)

Docker経験値0だった私も何冊か本を読んで実際にDockerfileを見たりいじったりしてみてECSに試行錯誤でデプロイしてみたりして、ようやく少しずつ慣れてきた感が出てきました。
しかしまだまだ「バッチリできます!」というには力不足間は否めなく…いやそういう話じゃない。
折角本を読んだりネット上の先輩たちの記事を読んだりして色々覚えたのだから、それをまとめておきたいと思います。
実はもうすでに日本語での公式なDockerfileベストプラクティスが存在するので、意味がないといえばたぶん意味はないのですが、アウトプットをして学習にいったんの区切りをつけるという意味で自己満足も兼ねて書きたいと思います。

Dockerfileについての基本的なこと1コンテナ1プロセスを起動するつもりでDockerfileを書く1プロセスとはつまりnginxとmod-phpによるPHPアプリケーションなら2つのコンテナを用意するということコマンドは大文字で書く( RUN, COPY, EXPOSE 等)#によるコメントアウトが使えるFROM 文は先頭に1行だけ書くCMD 文は末尾に1行だけ書く Dockerfile についてやるべきこと・意識すべきことDockerHub のイメージは「公式」とわかるもの以外むやみやたらに使わずできるだけ Dockerfile を読んでから利用を判断する
DockerHub は Docker イメージの共有サイトだが、有象無象のコンテナイメージが登録されており、(その意図はなくても)セキュリティ的に危険なコンテナが存在する可能性は十分にある。 DockerHubが公式に提供しているNginx など、ソフトウェアベンダ(団体)の公式イメージ以外は基本的に利用しないことで基本的なセキュリティある程度確保することができる。 構文にはshell形式とexec形式が利用できるものがあるが基本的にexec形式を利用する
例えばCMDコマンドはshell形式とexec形式を利用することができる。
shell形式は指定された文字列を /bin/sh -c に渡すことでコマンドを実行する。
その場合に、exec形式だと/bin/shに対する攻撃のような文字列の実行を回避することができる。 FROM 文で引用するイメージのタグに latest は利用しない
Docker はタ…