IT/ICT

【超便利】Dockerを利用したテスト環境でいろいろ試す

 

Dockerを入れる事で何ができるの?
簡単にテスト環境を作れちゃいます。
たろう
例えば、どんな環境だろ?

・テーマをいろいろいじって試したい
・phpやcssを自分なりにいじってみたい
・.htacess などデリケートな部分を触れる場合に試したい

と言った事にすぐ対応できちゃうよ

たろう

 

 

ちょっと試したいことでも、本番環境でいきなり設定変更するのは怖いなと思うことありませんか。

そんな方におすすめの方法を紹介します。

仮に壊れてしまっても、また新しい環境をサクっと用意できます。

 

 

Dockerの環境を用意する

wordpressのイメージとmysqlのイメージを取得して、自宅のサーバ環境で起動する。

既に私の自宅では、検証用のサーバがあり、そのサーバの中にDockerも起動することにしました。

既に、そのサーバの80番ポート及び3306番ポートは、既に検証環境①として利用している為、今回は、8080番ポート、4306番ポートを利用することとして作成しました。

Dockerイメージを基に、検証環境1、検証環境2と作成できてしまいます。

因みに、私の場合は、既に検証用の自宅サーバがあるので、その環境に入れてますが、WindowsでもMacでもDockerの利用環境は作れます。

 

まずは、インストールです。

ストレージドライバインストール

yum install -y yum-utils device-mapper-persistent-data lvm2

 

Docker CE(コミュニティエディション)インストール

yum install docker-ce

 

Dockerの起動

systemctl start docker

この起動した状態でdockerコマンドが打てるようになります。

 

例えば、centos7 の環境を欲しい場合、以下のコマンドを打つだけ。

イメージの取得例

docker pull centos:centos7

 

イメージの確認

docker images

 

では、本題。

WordPressのテスト環境を作ってみる

今回は、Wordpressの環境をもう1つ欲しいと言った場合に、既に出来上がっているイメージがあるのでそれを利用しちゃいましょうと言うお話です。

では、どうするかと言うと下記のコマンドを打つだけです。

(今回は、wordpressの利用ということにしているので、下記イメージの取得です。)

 

WordPressのイメージ取得&起動

docker run --name test-mysql -e MYSQL_ROOT_PASSWORD=PASSWORD -d -p 4306:3306 mysql:5.7

 

MySQLのイメージ取得&起動

docker run --name test-wordpress -e WORDPRESS_DB_PASSWORD=PASSWORD --link test-mysql:mysql -d -p 8080:80 wordpress

 

これで、もう使えてしまいます。
便利ですね~

因みに、イメージの中を操作するには、

docker exec -it test-wordpress /bin/bash

としてあげれば、イメージの操作できます。

 

 

コンテナの確認

docker container ls -a

 

ここで、コンテナの状況を確認します。

 

実際にアクセスしてみる

では、早速アクセスしてみましょう。
(自宅の検証環境用のLAN環境なので、ご自身の環境に合わせてくださいね。)

上記コマンドでは、wordpressのポートを8080に設定しているので、下記にアクセス。
【今回作成した検証環境②】
http://172.16.20.31:8080

最初のセットアップの画面が出てきました。

こちらから、設定を行っていきます。

 

因みに、自宅サーバで既に入れているwordpressは、デフォルトのApacheのポートなので、そちらが80番です。
【元々ある検証環境①】
http://172.16.20.31

 

これで、最悪、ぶっ壊れても、コンテナを削除して、新しく用意すれば良い。

自分は、結構、試しにかかる時、メチャクチャ攻めるタイプなので、これはお薦めです。

 

まとめ

今回、手っ取り早く検証環境を作成する為にDockerを利用しました。

コードや設定ファイルをいろいろ試したいけど、稼働している環境で一か八かの設定変更入れるのは怖いものです。

そんな時に、このような環境で、予め動作検証を行えると言うのは良いですよね。

バックアップも重要ですが、このような環境を作成して、日々勉強にあてるのも良いと思います。

 

 

 

おまけ(参考)

まだ1つ、2つくらいのコンテナであれば問題無いですが、種類が増えるようであれば、「docker-compose」と言うものを使います。

参考に、今回で利用する場合であればこんな感じになるのかと思います。

 

docker-compose.ymlの作成

docker-compose
version: '2'

services:
db:
image: mysql:5.7
container_name: {my-container-name-db}
volumes:
- db_data:/var/lib/mysql
restart: always
environment:
MYSQL_ROOT_PASSWORD: PASSWORD
MYSQL_DATABASE: test-mysql
MYSQL_USER: wordpress
MYSQL_PASSWORD: wordpress
ports:
- '4306:3306'

wordpress:
image: wordpress:latest
container_name: {my-container-name}
depends_on:
- db
ports:
- "8080:80"
restart: always
environment:
WORDPRESS_DB_HOST: db:4306
WORDPRESS_DB_PASSWORD: wordpress
volumes:
db_data:

 

必要なコマンド

イメージの確認・入手
docker search

---例-helpを確認するようにしてね---
Usage: docker search [OPTIONS] TERM

Search the Docker Hub for images

Options:
-f, --filter filter Filter output based on conditions provided
--format string Pretty-print search using a Go template
--limit int Max number of search results (default 25)
--no-trunc Don't truncate output
-------------------------------------------------

docker pull

イメージの確認
docker images

イメージの起動
docker run xxxxxxxxxxx

コンテナの状態確認
docker ps

コンテナの起動
docker run -it (CONTAINER IDまたはNAME)

コンテナの停止
docker stop (CONTAINER IDまたはNAME)

コンテナの終了
sudo docker kill (CONTAINER IDまたはNAME)

コンテナの削除
docker rm (CONTAINER IDまたはNAME)

外部と通信させる
docker port

新しいイメージとして保存
docker commit

イメージそのものの削除
docker rmi (Image ID)

イメージのdocker hubへの登録
sudo docker push (docker-registry-username)/(docker-image-name)

GitHubを利用する

「docker push」コマンドを利用できます。

自分で利用するイメージをDocker Hubにアップロードもできます。

Docker Hub へのアカウント登録を、GitHubアカウントの認証で行えます。

 

 

-IT/ICT
-