1
0
はじめての記事投稿
Qiita Engineer Festa20242024年7月17日まで開催中!

【Docker】Dockerfile のコマンド説明

Last updated at Posted at 2024-07-09

Dockerfileの項目説明

「よーし、なんか作ろっかなー」と思って、とりあえずやることが
Dockerでの仮想環境の作り方を調べることをしてるので (いい加減 オボエテ...)
N番煎じですが、自分のためにも書いていきます!

はじめに

  • 主にコマンドの説明をしてます。
  • 仮想環境の手順を見たい方は、他の方の記事を参考にしてください。

Dockerfile

使用するイメージや、コンテナ内での作業を書くファイル
pipインストールは、requirements.txtを使うことが多い

よく使うコマンド

  • FROM

    • 使用するイメージを指定する
    FROM python:3.8
    

  • RUN

    • コンテナ内で実行するコマンドを書く

    • apt-getでパッケージをインストールするときに使う

      apt-get は、先に apt-get update を実行する必要があるが、
      installと別々のRUNコマンドで実行すると、キャッシュに問題発生することがあるので、一つにまとめるたほうがいい

    RUN apt-get update && apt-get install -y \
      vim \
      git
    

  • COPY

    • ローカルファイルをコンテナ内に持っていきたいときに使う
    COPY ./app /app
    

  • EXPOSE

    • コンテナがリッスンするポートを指定する。

    これは変数宣言のようなもので、配布する際に分かりやすくするためのもの
    個人のみで使用する場合、記載してもあまり意味がない。

    EXPOSE 3000
    

    実際に、ホストとコンテナのポートを通す場合、runコマンド時に
    -pオプションを指定する。

    docker run -p 8080:8000
    
    • この場合、8080がホストで8000がコンテナとなります。 
    • ホスト側のブラウザで、localhost:8080でアクセスしたときに
      コンテナ内の8000にリダイレクトされる感じ。 

  • ENV

    • コンテナ内の環境変数を設定できる。 
    ENV NODE_ENV=testServer
    ENV MSSQL_LCID=1041
    

  • CMD

    • コンテナ起動時に実行するコマンドを書く
    CMD ["python", "app.py"]
    

requirements.txt

  • 説明

    • pipでインストールするパッケージを書くファイル
    • Dockerfile内で、requirements.txtを使ってパッケージをインストールすることが多い
  • 使用例

    # pipインストールするパッケージ
    requests
    Flask==1.1.2
    selenium>=1.0,<=2.0
    
  • このファイルの書き方

    • == や >= 等の比較演算子を使うことでバージョンの指定が出来る。
    • パッケージ名のみを指定すると最新バージョンがインストールされる。
    • ,(カンマ)で区切ると、バージョンの範囲指定が出来る。
    • # でコメントアウトが出来る。
  • 使い方

    • Dockerfile内で、RUN pip install -r requirements.txt と書くことで、
      requirements.txtに書かれたパッケージをインストールすることが出来る。

おわりに

Dockerで実行する際に、デフォルトではルート権限で実行されるので
セキュリティ上、USER でユーザーを指定することがいいです。
これも、Dockerfile内で書くことが出来ますが、手順が増えるので別途書こうと思います。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0