DEV Community

koki-takishita
koki-takishita

Posted on

dockerファイル作成

dockerファイルとは

Docker イメージというコンテナの土台となるファイルのこと.

dockerファイルの基本的なコマンド

  • コマンドに関するドキュメント(ja)

  • FROM
    OSを指定する.

    FROM ubuntu:latest 
  • RUN
    使用するパッケージの指定とパッケージ保守プログラムを記載.

    RUN apt-get update && apt-get install -y ruby ruby-dev RUN gem install sinatra 
  • CMD
    Dockerを起動した時に走らせるプログラム

    CMD ["/bin/bash"] 
  • COPY

    COPY something /new_dir/ 

実際に作成してみる

ディレクトリ作成

mkdir docker 
Enter fullscreen mode Exit fullscreen mode

dockerファイル作成

touch Dockerfile # 今回の実習でCOPYするファイル touch something 
Enter fullscreen mode Exit fullscreen mode

dockerファイルにプログラムを書き込む

# OSを指定する FROM ubuntu:latest # パッケージをインストール 「\」は改行しても1行とみなされる. # 「&&」は複数のコマンドを同時実行 1行でまとめることでレイヤーを少なくする. RUN apt-get update && apt-get install -y \ bzr \ cvs \ git \ RUN mkdir app COPY something /app/ # run後に走らせるプログラム shellを起動させている CMD ["/bin/bash"] 
Enter fullscreen mode Exit fullscreen mode

buildしてイメージを作成

# .はカレントディレクトリを指定している. docker build . # 作成できているか確認 docker images 
Enter fullscreen mode Exit fullscreen mode

runしてパッケージがインストールされているか && somethingファイルが存在するか確認

docker run -it <image id> # docker内でパッケージとファイルを確認 パッケージはbin/〜 ls 
Enter fullscreen mode Exit fullscreen mode

キャッシュをうまく使う

下記のように1行で記述すると、レイヤーの数を削減できるがパッケージの追加や編集の際にいちからbuildしてるとインストールに時間がかかってしまう。

RUN apt-get update && apt-get install -y \ bzr \ cvs \ git \ 
Enter fullscreen mode Exit fullscreen mode

ファイル編集時や構築時にはすべて1行づつ記述する.
キャッシュにより前回インストールしたものはインストールせずに進むため時間短縮になる。
すべてのプログラムが動くことを確認してから1行でまとめるのがベストプラクティス

RUN apt-get update RUN apt-get install -y bzr RUN apt-get install -y cvs RUN apt-get install -y git 
Enter fullscreen mode Exit fullscreen mode

exit code :100

一度buildした後、再度ファイルを編集してbuildすると、エラーが起こる.
理由は不明だが、updateを記述しない状態でbuildするとエラーが発生する.
updateを記述することで解決する.

RUN apt-get update RUN apt-get install -y bzr RUN apt-get install -y cvs RUN apt-get install -y git 
Enter fullscreen mode Exit fullscreen mode

Top comments (0)