2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

初めての Docker 30分チュートリアル:Dockerfile で Image を build まで

Posted at

本記事の想定オーディエンスとゴール

初めて Docker を使う人.最小限の学習コストで Dockerfile による Image 作成までをハンズオンしたい人.

  1. インストール
  2. Hello World
  3. commit コマンドで新 Image 作成
  4. 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 名を指定.

bash
# 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

以下を記述.

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
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`
2
2
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?