見出し画像

Docker_イメージからコンテナを作成してみる #126日目

Dockerに関する学びの続きです。
前回の記事はこちらです。


今回はこちらのチュートリアルに沿って進めてみました↓。


Dockerとはコンテナという箱のようなものにOSやソフトウェアがインストールされた環境を閉じ込めておくことができるものです。このコンテナは、Dockerfileからイメージというものを作成し、イメージからコンテナを作ります

イメージからコンテナを作る、といってもピンと来ませんが、前回の記事で紹介したDockerのチュートリアルでも「build the image」という行程を経てコンテナが作られていました。

この辺の理屈は追い追い理解するとして、ここではイメージからコンテナを作る、そしてそれをビルドと言う、という認識だけ持って進めたいと思います。


まずDockerfile(拡張子なし)を作り、以下のコードを記述します。

各コードの詳細は動画の中の説明をご参照ください。大まかには言うと、DockerコンテナにLinuxのubuntuを立てて、そのubuntu上にAnacondaをインストールし、Jupyter Labを起動する記述です。

FROM ubuntu:latest

RUN apt-get -y update && apt-get install -y sudo wget vim git curl gawk make gcc

RUN wget https://repo.continuum.io/archive/Anaconda3-2019.03-Linux-x86_64.sh && \
    sh Anaconda3-2019.03-Linux-x86_64.sh -b  && \
    rm -f Anaconda3-2019.03-Linux-x86_64.sh && \
    sudo curl -sL https://deb.nodesource.com/setup_10.x | sudo bash -  && \
    sudo apt-get install -y nodejs

ENV PATH $PATH:/root/anaconda3/bin

RUN mkdir /workspace

CMD ["jupyter-lab", "--ip=0.0.0.0", "--port=8888", "--no-browser", "--allow-root", "--LabApp.token='"]


コードを書いて保存したらターミナルを開き、以下のコードでDockerfileからイメージを作成(ビルド)します。ちなみにjlabというのはイメージの名前で、ここは任意です。

docker build -t jlab:latest /Users/ファイルまでのパス/MyDocker

実行すると以下のような画面になります。

実行完了には結構時間がかかり、自分の場合は上記のコードで4分かかりました。調べてみるとビルド時間短縮のノウハウ記事がたくさん出てきたので、そもそも時間がかかるものみたいです。

完了すると以下のように表示されます。
anacondaをインストールするところに時間がかかったみたいですね。

[+] Building 239.4s (8/8) FINISHED
 => [internal] load build definition from Dockerfile                                                                             0.0s
 => => transferring dockerfile: 1.83kB                                                                                           0.0s
 => [internal] load .dockerignore                                                                                                0.0s
 => => transferring context: 2B                                                                                                  0.0s
 => [internal] load metadata for docker.io/library/ubuntu:latest                                                                 1.9s
 => [1/4] FROM docker.io/library/ubuntu:latest@sha256:8ae9bafbb64f63a50caab98fd3a5e37b3eb837a3e0780b78e5218e63193961f9           0.0s
 => CACHED [2/4] RUN apt-get -y update && apt-get install -y sudo wget vim git curl gawk make gcc                                0.0s
 => [3/4] RUN wget https://repo.continuum.io/archive/Anaconda3-2019.03-Linux-x86_64.sh &&     sh Anaconda3-2019.03-Linux-x86_  215.1s
 => [4/4] RUN mkdir /workspace                                                                                                   0.6s
 => exporting to image                                                                                                          21.7s
 => => exporting layers                                                                                                         21.7s
 => => writing image sha256:d0cfbe68ee668e596c132cb90a45a51de29aa38794b5cebc477c6a045289ca60                                     0.0s
 => => naming to docker.io/library/jlab:latest                                                                                   0.0s

Use 'docker scan' to run Snyk tests against images to find vulnerabilities and learn how to fix them


無事にイメージが作られたか以下のコードで確認します。

docker images

作成した「jlab」がREPOSITORYに表示されていればOKです。

REPOSITORY          TAG       IMAGE ID       CREATED          SIZE
jlab                latest    d0cfbe68ee66   10 minutes ago   3.89GB
docker101tutorial   latest    150b7a52be5a   47 hours ago     28.8MB
alpine/git          latest    c6b70534b534   3 months ago     27.4MB
hello-world         latest    feb5d9fea6a5   5 months ago     13.3kB


続いて、作成したイメージからコンテナを作成します。
以下のコードを実行します。--name のあとにはイメージの名前とイメージIDが入る形です。

 docker run -p 8888:8888 --name jlab d0cfbe68ee66

↓こんな感じの表示が出たら成功です。

[I 12:55:00.970 LabApp] Writing notebook server cookie secret to /root/.local/share/jupyter/runtime/notebook_cookie_secret
[I 12:55:01.525 LabApp] JupyterLab extension loaded from /root/anaconda3/lib/python3.7/site-packages/jupyterlab
[I 12:55:01.525 LabApp] JupyterLab application directory is /root/anaconda3/share/jupyter/lab
[W 12:55:01.526 LabApp] JupyterLab server extension not enabled, manually loading...
[I 12:55:01.528 LabApp] JupyterLab extension loaded from /root/anaconda3/lib/python3.7/site-packages/jupyterlab
[I 12:55:01.528 LabApp] JupyterLab application directory is /root/anaconda3/share/jupyter/lab
[I 12:55:01.528 LabApp] Serving notebooks from local directory: /
[I 12:55:01.528 LabApp] The Jupyter Notebook is running at:
[I 12:55:01.528 LabApp] http://(e82eb6aedbaf or 127.0.0.1):8888/?token=...
[I 12:55:01.528 LabApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation).


しかしWindowsだとここから表示させるのにもうひと手間かかるらしく、今日は一旦ここまでにします。私はなぜかjupyter notebookが表示され、ログインを求められたのでそっと閉じました。

Macだとlocalhost:8888にアクセスすればJupyter labが使える状態になっているらしいです。


とりあえず今日はここまで。
お読みいただきありがとうございました!


この記事が気に入ったらサポートをしてみませんか?