5
3

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.

DockerAdvent Calendar 2019

Day 16

Docker入門 ローカル環境とクラウド環境を作ってみよう(2/4)

Last updated at Posted at 2019-12-15

第2回目になります。

今回はDockerに慣れるというのがゴールです。
Dockerらしい使い方ではないですが、とりあえず使うのが目的です。

関連する記事

Docker入門 ローカル環境とクラウド環境を作ってみよう(1/4)

[Docker入門 ローカル環境とクラウド環境を作ってみよう(3/4)]
【中級】本番環境を意識した役割で細分化してみた

[Docker入門 ローカル環境とクラウド環境を作ってみよう(4/4)]
【上級】コンテナオーケストレーションを意識して作ってみた


【初級】VMみたいに使ってみた

Dockerの動作として以下の構成は知っておいて損はないです。
『Docker for Mac/Windows』だと一度にクライアントとサーバがインストールされます。

Dockerを構成するコンポーネント

Docker のアーキテクチャ
引用: http://docs.docker.jp/engine/docker-overview.html

  • Dockerクライアント
    • コマンドをデーモンに送ります
  • Dockerデーモン(サーバ)
    • コンテナを動作させます
  • Dockerレジストリ
    • イメージを保管します <-更に詳しく掘り下げます

レジストリにあるDockerイメージについて

Dockerイメージとは読み込み専用のテンプレートで、コレを使ってDockerコンテナを起動します。
Dockerイメージはレイヤの積み重ねで構成されています。
レイヤ構成については詳しく説明してくれている記事があるので、そちらを読んだほうがいいです。

イメージは、ベース・イメージ(例 Ubuntu、CentOS)から作成します。
さらに構築できるようにするため、『命令』と呼ぶ構築手段を簡単に記述した集まりがあります。

命令は次のような動作をします。

  • コマンドの実行
  • ファイルやディレクトリの追加
  • 環境変数の作成
  • 対象イメージを使ってコンテナを起動する時、どのプロセスを実行するか

これらの命令を『Dockerfile』と呼ぶファイルに保管します。
DockerはこのDockerfileを読み込み、命令を実行し、最終的なイメージを作ります。

Dockerfileについて

記述するシンプルなテキスト形式のファイルになります。

(例) Web+DBサーバのDockerfile

Dockerfile
# ベース・イメージを決める
FROM centos:6.9

# 必要なパッケージをインストール
RUN yum install -y httpd httpd-devel mysql mysql-server php php-pdo php-mysql

# インデックス
RUN echo '<?php phpinfo() ?>' > /var/www/html/index.php

EXPOSE 80 3306
CMD ["/usr/sbin/httpd", "-DFOREGROUND"]

イメージからコンテナ作成・・・そして起動まで

Dockerfileを作り終えたら、DockerクライアントからDockerコマンドを利用してイメージの作成をします。
その後、生成されたイメージからコンテナを生成して起動します。

Docker.png

コマンドリスト

コンテナ作成

使い方: docker build [ -t {イメージ名} [ :{タグ名} ] ] {Dockerfileのあるディレクトリ}

$ docker build -t acron/web:1.0 .

コンテナ起動

使い方: docker run -p {開放ポート:アクセスポート} --name {コンテナ名} {イメージ名}:{タグ名}

$ docker run -p 80:80 --name web1 acron/web:1.0

すでにrunで起動している場合は以下のコマンドになります。
$ docker start web1

コンテナへログイン

使い方: docker exec -it {コンテナ名} {起動シェル}

$ docker exec -it web1 /bin/bash

ローカルPCのマウント

オプション『-v』を利用します。

使い方: docker run -v {ホスト側ディレクトリ}:{コンテナ側ディレクトリ} -it --name {コンテナ名} {イメージ名}:{タグ名}

$ docker run -v ./app -it --name web1 acron/web:1.0

コンテナ停止

使い方: docker stop {コンテナID または イメージ名}

$ docker stop web1

WebコンテナをDockerで立ち上げる

起動シェルなどを作成したら複数プロセスを立ち上げれますが、今回はコンテナにログインして起動しています。

1. イメージの作成
$ docker build -t acron/web:1.0 .

2. コンテナ起動
$ docker run -p 80:80 --name web1 acron/web:1.0
 Webページが生成されます。
 ブラウザで「http:localhost」にアクセス

3. コンテナにログイン
$ docker exec -it web1 /bin/bash

4. DBインスタンスを起動
$ service mysqld start

まとめ

Dockerっぽい使い方ではなかったですが、Ansbleとかで作成していた内容がDockerfileにまとまり、Dockerコマンドを利用してコンテナという形で生成することができたと思います。
イメージという概念のおかげで、生成・削除が容易になっていたと思います。

次回は、もう少しコンテナらしくイメージを作成をして起動していきます。

参考にした詳しい資料

詳しい使い方や、Dockerの構造などが、とても分かりやすく説明されています。

Docker入門: コンテナ型仮想化技術の仕組みと使い方
https://www.slideshare.net/yuichi110/docker-introduction-42455180

Dockerfile を書くためのベストプラクティス解説編
https://www.slideshare.net/zembutsu/explaining-best-practices-for-writing-dockerfiles

5
3
0

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
5
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?