本記事の想定オーディエンスとゴール
初めて Docker を使う人.最小限の学習コストで Dockerfile による Image 作成までをハンズオンしたい人.
- インストール
- Hello World
- commit コマンドで新 Image 作成
- Dockerfile を使用し build コマンドで新 Image 作成
環境
VirtualBox 5.1.28
CentOS-7-x86_64-Minimal-1611
Docker version 1.12.6
Docker とは
- コンテナ型の仮想化環境を提供するオープンソースソフトウェア.Docker 社提供.
- 完全仮想化を行うハイパーバイザ型製品(VMwareなど)と比べて,ディスク使用量は少なく,仮想環境 (インスタンス) 作成や起動が早い.
基本用語
Docker Image ~ アプリケーションとその実行環境,ファイルシステムや設定をまとめて1つのパッケージにしたもの.公式に配布されているものがあり,自作もできる.
Docker Container ~ Docker Image を起動し,その内部でアプリケーションが稼働している状態.
Dockerfile ~ 特定の Image を作成するスクリプト.
Docker Registry ~ Image を共有するためのサーバソフトウェア(Repository は Registry 内のカテゴリ)
Docker Hub ~ Docker 社公式 Registry.
1. Docker インストール
(コマンドはすべて root ユーザにて実施することとします)
# yum install docker
# systemctl start docker
# systemctl enable docker
基本コマンド(1)
# docker images ~ ローカル Repositry に保存されている Image の一覧
# docker run <Image 名> ~ 指定 Image を起動
# docker ps ~ 起動中 Container 一覧
# docker ps -a ~ 停止中も含めた全 Container 一覧
2. Hello World
# docker run hello-world
run は Image を起動するコマンド.
"hello-world" Image を探し,ローカル Repository になければ,Docker Hub(公式 Registry)から pull し,Container を起動する.
Container は "Hello from Docker!" 他のメッセージを出力し終了.
# docker images # ローカル Repository に hello-world Image が追加されたことを確認.
# docker ps -a # 停止済みの hello-world の Container があることを確認
# docker ps # 停止済みの hello-world の Container が表示されないことを確認
基本コマンド(2)
# docker pull <Image 名> ~ Registry から Image をダウンロード
# docker commit <Container 名/ID> ~ 操作した Container を新 Image として作成
3. CentOS Image を pull -> yum update -> 新 Image として作成
# docker pull centos:centos7 # Docker Hub からダウンロード
# docker run -it --name centos7-01 centos:centos7 bash
-it オプションで bash 実行,プロンプト表示.--name オプションは Container 名を指定.
# yum -y update
# exit
# docker ps -a # 停止済みの centos7-01 の Container があることを確認
# docker commit centos7-01 tanishi/yum-update # tanishi/yum-update の Repository に新 Image を作成
# docker images # ローカル Repository に tanishi/yum-update が追加されたことを確認.
基本コマンド(3)
# docker build -t <新 Image 名> { Dockerfile のあるディレクトリ } ~ Dockerfile で新 Image を作成
4. Dockerfile で ruby インストール済みの新 Image を作成
任意のディレクトリ(今回は /var/tmp/ )に Dockerfile という名のファイルを作成.
# cd /var/tmp/
# vi Dockerfile
以下を記述.
FROM tanishi/yum-update # 元の Image
RUN yum -y install ruby
# docker build -t tanishi/ruby /var/tmp/
確認.
# docker images # ローカル Repository に tanishi/ruby が追加されたことを確認
# docker run -it --name ruby-01 tanishi/ruby:latest bash
# irb
irb > p "Hello Ruby!"
"Hello Ruby!"
=> "Hello Ruby!"
irb > exit
# exit
基本コマンド(4)
# docker rmi <Image 名/ID> ~ 指定 Image 削除
# docker rm <Container 名/ID> ~ 指定 Container 削除
# docker rm `docker ps -a -q` ~ 停止中も含めた全 Container 一括削除
####後片付け
全コンテナ削除.
# docker rm `docker ps -a -q`