Docker > Dockerイメージの作り方

更新日 2019-06-16
広告
Dockerイメージの作り方を紹介します。

Dockerfileの書き方

Dockerイメージを作るためには、まず、Dockerfileを書く必要があります。 Dockerfileはテキストファイルです。 このフィルに、インストールしたいOSやライブラリを指定して、最後に、コンテナで実行したいアプリを指定します。

Dockerfileでは、まず、base imageを指定します。 たとえば、OSのimageはbase imageの一種です。 base imageは"FROM"で指定します。以下は、centOS7を指定する例です。

FROM centos:centos7
次に、コンテナが必要とするソフトウェアのインストールなどを行います。 OSのパッケージシステムを使うと楽です。 CentOSであればyumを使います。 yumやaptなどのコマンドの実行は RUN で行います。
RUN yum install xxxx
特定のファイルをコンテナに埋め込むためには、"COPY"を使います。 コンテナのどこにファイルを置くかも指定します。
COPY file-name /home/xxx
コンテナが実行するアプリが、通信を行う場合、そのアプリはあるポート番号を使うはずです。 例えばウェブサーバであれば80や443を使うでしょう。 そのポート番号をホストのポート番号とマッピングする必要があります。 マッピングは、コンテナを実行する際に使用するのですが、そのためには、コンテナのポート番号を公開する必要があります。 それには"EXPOSE"を使います。
EXPOSE 80
コンテナが実行するアプリは、"CMD"で指定します。 CMDは、Dockerfileに一個だけです。 もろもろの準備が完了したら、最後にCMDを指定するとよいでしょう。
CMD ["python", "/usr/src/app/app.py"]
最初のpythonがコマンドで、その後は、コマンドに対する引数です。 つまり上記の例は、以下のコマンドをコンテナ上で実行することを意味します。
$ python /usr/src/app/app.py
Dockerfileが完成したら、イメージを作りましょう。 -t で、イメージの名前を指定する。 そのあとの”.”は、Dockerfileがあるディレクトリのパスす。 Dockerfileと同じディレクトリであれば、”.”でoです。 Dockerfileの内容が正しければ、イメージが作成されます。
$ docker build -t xxxx/yyyy .
プロキシ配下でbuildする場合は、プロキシを設定する必要があります。 例えば、コンテナ上でyumやaptを使う場合は、プロキシの設定が必要でしょう。 環境変数は"ENV"で指定できます。
ENV https_proxy "http://proxy.hoge.server:8080/"
ENV http_proxy "http:// proxy.hoge.server:8080/"

yum関連のエラー

yumのrepositoryが見つからない、というエラーが出る場合があります。 デフォルトのレポジトリではなく、特定のレポジトリを指定するなら、そのレポジトリを記載した設定ファイル(CentOS-Base.repoなど)をCOPYするようにDockerfileに記載しておけばよいです。
COPY CentOS-Base.repo /etc/yum.repos.d/
yumの処理は、たまにユーザに対して yes or noを訪ねてきます。 自動的に yes と答えないと、途中でイメージ作成が止まってしまいます。
CMD yum update –y
広告
お問い合わせは sweng.tips@gmail.com まで。
inserted by FC2 system