Docker超入門⑦〜よく使うDockerfileコマンド一覧〜【初心者向け】

グローバルでAI開発者・データサイエンティストを目指す人向け
おすすめUdemy講座一覧

TOEIC300→海外就職の英語勉強法まとめ

こんにちは,米国データサイエンティストのかめ(@usdatascientist)です.

(追記:Docker動画講座作りました.Dockerについてもっと学びたい人は是非!14時間にも及ぶ超壮大講座です.

【全14時間超え】Dockerの動画講座を公開します【徹底的にわかりやすく解説】

 

Docker超入門も第7回まできました...この連載もあと少しです.

今回は第5回の記事で使ってみたDockerfileをもっと使いこなせるようにしようと思います.

Docker超入門⑤〜Dockerfileを使う〜【初心者向け】

第5回の記事では以下のDockerfileを作ってビルドしました.

  • FROM ubuntu:latest  ベースになるDocker image
  • RUN touch test ubuntu:latest の上に $ touch test を実行したimage layerを作成

実業務ではもっと複雑なDockerfileを作れる必要があるので,今日は FROMRUN に加えてよく使うコマンドを一覧にして紹介したいと思います

Dockerfileのビルド時の動作をちゃんと理解する

Dockerfileのビルド時の挙動をもう少し詳細にみてみましょう.以下の手順に従って,実行してみてください.ここでは,ビルド時に指定したフォルダにファイルを作成するやり方と,ホスト側のファイルをコンテナにコピーする方法をみていきます.

まず,第5回同様, dockerフォルダを作成し,その中にDockerfileというファイルを作ります.既に作ってある人はそのDockerfileを上書けばOK

私は ~/Desktop に作りました. $subl コマンドでSublimeでDockerfileを開き,以下のコードをコピーしてください.(どのエディタでも構いませんが,本ブログではSublimeの使用を勧めています.Sublimeについてはこちら$subl コマンドが動かない人は正しくPathが通っていないので,こちらの記事のsublime使い方④を参考にしてください.)

Dockerfileに上記の内容を記述(コピペでもOK)してビルドしてコンテナに入ってみましょう

Dockerfileでは RUN cd new_dir してもtestファイルは /new_dir/ 配下ではなく / 配下に作られていることに注意です.Dockerfileの各コマンドは / 配下で実行されるんですね!

もしnew_dirでファイルを作成したい場合はShellのコマンドと同じように && で連結させましょう.

先ほどと同様に,ビルドしてみてください.ちゃんと /new_dir/test が作成されていることがわかると思います.

次は,Dockerfileをビルドする際に,ホスト側のファイルをDocker imageにコピーする方法です
通常,ビルド時にはイメージ側からホスト側のデータにはアクセスできないため,一度ファイルをコピーしてあげる必要があります.

ホストの docker/ 配下に sample_file を作成し,

Dockerfileを以下に書き換えます.COPYコマンドでコピーすることが可能です.

ちゃんとファイルがありますね♪

慣れてきたと思うので,よく使うコマンド一覧を紹介します!

よく使うDockerfile定番コマンド(instruction)一覧

よく使うコマンド(Instruction)一覧です.覚える必要はないですが,だいたいこの辺のコマンドが必要になってくるので存在を知っておくと便利です.
業務で使っていくうちに理解しましょう!

Instruction(リンクは公式レファレンスやガイド) 説明
FROM イメージのベースとなるものです.なるべくDockerが公式に出しているベースのものを使いましょう.
RUN コンテナ内でコマンドを実行します.なるべくバックスラッシュ \ で繋げて一行して綺麗にしましょう.
 CMD CMD [‘コマンド’, ‘引数1’, ‘引数2’]といった使い方をします.

Dockerをrunした時にコンテナに入るのではなく実行することを目的とした時に使う. 変更可能

ENTRYPOINT ENTRYPOINT [‘コマンド’, ‘引数1’, ‘引数2’]といった使い方をします.

CMDと同様,実行可能コンテナを作る時に使う.変更ができず,「実行必須コマンド」にしたいときに使う.(ただし–entrypointオプションで上書きは可能)

LABEL イメージにメタデータをつける時に使う.例えば作成者の名前とか.
MAINTAINER 非推奨.LABELを使いましょう
EXPOSE コンテナにポートを開ける.コンテナの外からアクセスできるようにするには $ docker run -p {host_port}:{container_port} でコンテナのportをホストのportにマッピングさせる必要があります.
ENV 環境変数をセットする.セット後,コンテナ内で使い回し上書きも可能
ADD or COPY ビルド時にホストのファイルをイメージにコピーする.基本COPY推奨.ADDを使う場合は圧縮ファイルを自動解凍(tar -x)させたい場合くらいしか使わない.
VOLUME ホスト側のファイルシステムをマウントするのに使用
USER デフォルトはrootユーザになるので,それを避けたい場合はUSERコマンドでユーザを切り替える.なお,コンテナとホストはユーザIDとグループIDでのみ紐付かれ,名前ではマッチしない

と,こんな感じでしょうか.

一覧みてもピンと来ないと思うので,「こんなのあるんだなぁ」程度にみて,実務で必要なときに再度ググったり公式レファレンスをみて学ぶといいと思います.

(追記:もっとDockerについて学習したい人は動画講座を作ったのでこちらで学習してください.Dockerfileの作り方など,もっと詳細に解説しています.

【全14時間超え】Dockerの動画講座を公開します【徹底的にわかりやすく解説】

 

それでは!

1 個のコメント