
- 作者:Adrian Mouat
- 出版社/メーカー: オライリージャパン
- 発売日: 2016/08/17
- メディア: 単行本(ソフトカバー)
目次
- 目次
- 背景・目的
- Dcokerfileに記述したい内容
- 作成するための環境
- 1. Ubuntu18.04のベースイメージを取得
- 2. 「wget」, 「sudo」コマンドをインストール
- 3. Anaconda(Python3.7)をインストール
- 4. 別途必要なPythonのライブラリをインストールする
- GitHub
- 参考資料
背景・目的
前回の記事では、Dockerの基本的な
コマンドを学びながら、イメージや
コンテナの作成・起動などを実行
出来るようになりました。
前回は「docker commit」コマンド
でコンテナからイメージを作成する
方法を行いましたが、今回はもう
一つの方法である、「docker build」
コマンドで「Dockerfile」から
イメージを作成する方法を学んで
いきます。
Dcokerfileに記述したい内容
今回は、下記のようなインストール
処理をしながらUbuntuイメージを
作成するDockerfileを作成します。
- Ubuntu18.04のベースイメージを取得
- 「wget」, 「sudo」コマンドをインストール
- Anaconda(Python3.7)をインストール
- 別途必要なPythonのライブラリをインストールする
作成するための環境
Dockerfileを記述するのにPyCharmを
使用します。
www.jetbrains.com
Dockerfileの文法に合わせてコードを
ハイライトしてくれたり、入力補完
もしてくれるので便利です。
1. Ubuntu18.04のベースイメージを取得
まずはベースとするUbuntu 18.04
のイメージを取得するために下記
のように記述します。
# pull ubuntu 18.04 as base image
FROM ubuntu:18.04
試しにこれでビルドしてみます。
どうやら正常にビルド出来たようです。
「docker images」コマンドで
イメージ一覧を見てみましょう。
ちゃんと指定した名前のイメージが
作られていますね。成功です。
続いて、このイメージからコンテナ
を起動・ログインしてみます。
ちゃんとログイン出来ました。
今度はログアウトしてみます。
コンテナとの接続が切れて、更に
コンテナが削除されている事が
分かります。
「docker run」コマンドのオプション
で--rmを付けると、ログアウトと同時
にコンテナを削除するようになります。
これにより、コンテナ起動時の処理が
おかしくなったとしても、すぐに元の
まっさらな状態に戻せます。
2. 「wget」, 「sudo」コマンドをインストール
前回の記事でも書いたように、今回の
Ubuntuイメージには「wget」や
「sudo」といったコマンドが入って
いません。なので、これらを自動で
インストールしてくれるようにします。
先述した分に加えて、Dockerfileの
記述はこちらのようになります。
# pull ubuntu 18.04 as base image FROM ubuntu:18.04 # update packages RUN set -x && \ apt update && \ apt upgrade -y # install command RUN set -x && \ apt install -y wget && \ apt install -y sudo
「apt install」コマンドのオプションで
-yを付ければ、Yes/Noの質問にYesで
答えてくれるので自動で先に進めます。
3. Anaconda(Python3.7)をインストール
これが今回のメインです。
こちらのサイトからインストーラを
「wget」コマンドでダウンロード
して、インストールを開始させる
ようにします。
Dockerfileはこちらのように
記述します。
# pull ubuntu 18.04 as base image FROM ubuntu:18.04 # update packages RUN set -x && \ apt update && \ apt upgrade -y # install command RUN set -x && \ apt install -y wget && \ apt install -y sudo # anaconda RUN set -x && \ wget https://repo.anaconda.com/archive/Anaconda3-2019.10-Linux-x86_64.sh && \ bash Anaconda3-2019.10-Linux-x86_64.sh -b && \ rm Anaconda3-2019.10-Linux-x86_64.sh # path setteing ENV PATH $PATH:/root/anaconda3/bin
ここでただbashでインストーラ
を実行するだけだと、途中の[Y/n]
の部分から先に進まなくなって
しまうのですが、オプションで
「-b」を付ける事で全てデフォルト
のまま先に進めてくれるように
なります。
ちなみに、更にオプションで
「-p」を付ければインストール先
のディレクトリを指定する事が
出来ます。何もしなければroot
ディレクトリの直下に設定
されます。
インストール後に、ENVコマンドで
インストール先にパスを通す事も
忘れずにやっておきましょう。
イメージをビルドしてからコンテナ
を作成、起動し、このように
CondaやPythonのバージョンを
確認出来たらOKです。
4. 別途必要なPythonのライブラリをインストールする
Anacondaだけではインストール
されないPythonのライブラリも
あるので、requirements.txtも
一緒に用意して、自動で
インストールするようにします。
# pull ubuntu 18.04 as base image FROM ubuntu:18.04 # update packages RUN set -x && \ apt update && \ apt upgrade -y # install command RUN set -x && \ apt install -y wget && \ apt install -y sudo # anaconda RUN set -x && \ wget https://repo.anaconda.com/archive/Anaconda3-2019.10-Linux-x86_64.sh && \ bash Anaconda3-2019.10-Linux-x86_64.sh -b && \ rm Anaconda3-2019.10-Linux-x86_64.sh # path setteing ENV PATH $PATH:/root/anaconda3/bin # python library WORKDIR /root ADD requirements.txt /root RUN pip install -r requirements.txt # move to root directory WORKDIR ../
GitHub
今回作成したDockerfileは、
こちらのGitHubリポジトリで
公開しています。
参考資料
Dockerfileの概要や書き方、メリット
などはこれらの記事を参考にさせて
いただきました。