タダです。
今回はDocker実践活用ガイドの6章を読んだ内容をまとめていきます。 ※記事は理解ができるたびに何度もアップデートしていこうと思います。 book.mynavi.jp
なお、副教材としてドットインストールも使っていこうと思います。
目次
なお、各章の内容は次の通りです。
- 1章 Dockerとは
- 2章 Dockerの仕組み
- 3章 Dockerのインストール
- 4章 Dockerを使ってみよう(コマンド編)
- 5章 Dockerを使ってみよう(Kitematic(GUI)編)
- 6章 Dockerイメージの操作
- 7章 Dockerを使いこなす
- 8章 複数のDokcerを使う(Docker Machine、Docker Swarm、Docker Compose)
- 9章 Dockerをクラウドで使う(Docker Cloud)
- 10章 DockerとJavaScriptでウェブサービスを作る(簡易オンラインジャッジシステム)
- 11章 DOckerを利用した実運用ウェブサービス構築事例(paizaオンラインジャッジシステム)
- 12章 paizaの実行環境APIを使いウェブサービスを作る(簡易オンラインジャッッジシステム)
- 13章 Dockerの内部
6.1
- Dockerイメージは、コンテナで利用するファイルシステムや実行環境・設定を1つにまとめたもの
- Dockerイメージに関する主な操作は以下のとおり
6.2
- Dockerイメージのダウンロードは
docker pull
を使う
docker pull ubuntu Using default tag: latest latest: Pulling from library/ubuntu 22dc81ace0ea: Download complete 1a8b3c87dba3: Download complete 91390a1c435a: Download complete 07844b14977e: Download complete b78396653dae: Download complete ・ ・ 省略
- イメージ一覧は
docker images
で使える
6.3
- コンテナからDockerイメージを作成する手順は以下のとおり
- 1.コンテナをシェルで実行する
- 2.コンテナ内でアプリケーションのインストールなどを行い、ファイルを変更する
- 3.コンテナからDockerイメージを作成する
- Ubuntuのイメージを元にNode.jsの環境を作る
- まずは、
docker run
でコンテナ上でシェルを実行する
- まずは、
docker run -i -t ubuntu /bin/bash
- コンテナにアプリケーションをインストールする
# apt-get update # apt-get install -y curl # curl -sL https://deb.nodesource.com/setup_4.x | bash - # apt-get install -y nodejs
- 最後にDockerイメージを作成する
$ docker commit <コンテナID> <Dockerイメージ名>
6.4
docker commit
ではDockerイメージを作成できるが、この方法ではDockerイメージを作り直すたびにコマンドで手で入れる必要がある- コマンドの実行結果が残らないし、どのようにファイルを編集したかも忘れてしまう
- DockerfileにDockerイメージの構築手順をかいて、その手順からDockerイメージを自動生成(ビルド)することができる
- Dockerfileをつくってみる
FROM ubuntu RUN apt-get update RUN apt-get install -y curl RUN curl -sL https://deb.nodesource.com/setup_4.x | bash - RUN apt-get install -y nodes
- Dockerイメージのビルド
docker build
コマンドでDockerfileからDockerイメージを作成する- RUNコマンド1つにつき、1つのファイルシステムの層が作られる
- 層は127まで作れる
$ docker build -t ubuntu-nodejs-2 . $ docker images
6.5
- Dockerイメージを元に、アプリケーションのDockerイメージを作成する
- アピリケーションのコードを書く(app.js)
var express = require('express'); var app = express(); app.get('/', function (req, res){ res.send('Hello world\n'); }); app.listen(8080); console.log('Running on port 8080');
- 次にアプリケーションの情報を記述する(pakerge.json)
{ "name": "docker_web_app", "version": "1.0.0", "dependencies": { "express": "^4.13.3" } }
- Dockerイメージ構築手順をDockerfileに記述する
FROM ubuntu-node-js-2 RUN mkdir /app ADD app.js /app ADD packege.json /app WORKDIR /app RUN npm install EXPOSE 8080 CMD [ "node", "app.js"]
- Dockerfileのビルドする("ubuntu-node-app")
$ docker build -t ubuntu-node-app .
6.6
- 作成したDockerイメージはDocker Hubなどのレジストリにアップロードして保存する
- Dockerイメージをアップロードする(docker tagコマンドでDockerイメージの名前を変更する)
$ docker tag ubuntu-node-app ユーザー名/ubuntu-node-app $ docker login $ docker push ユーザー名/ubuntu-node-app
6.7
- DockerイメージはDocker Hubからダウンロードしたり、コンテナから作成したり、Dockerfileからビルドできる
- Dockerfileを使うことで、構築手順を明確にして再利用が可能になる
- 作成したDockerイメージをDocker Hubにアップロードして、再利用や共有が可能になる
次回は7章です。