この記事は現役ウェブディベロッパーがわかりやすさにこだわって作成しました
「Docker」という言葉は最近よく耳にしますが、仮想環境を作る技術ですか。
Dockerによるコンテナ化の技術は、機能をモジュールごとにパッケージ化技術であって、VirtualBoxやVMのような仮想化の技術ではありません。しかし、仮想環境でもとても役に立つ技術です!
はじめに
ここではDocker開発環境構築に必要なサービスやツールおよびそのコマンドを紹介します。
まずはじめに国内でのDockerの利用状況について見てみます。
2021年Dockerコンテナの導入状況に関するユーザー調査結果(調査年別)からの引用です
コンテナの導入状況について調査した結果(参考資料)、本番環境で使用している企業は16.9%となり、2020年調査から2.7ポイント上昇しました。さらに導入構築/テスト/検証段階にある企業は23.3%となり、2020年調査から4.7ポイント上昇しました。この2つを合わせた40.2%の企業がコンテナの導入を進めていることになり、国内はコンテナの本格的な普及期に入りました。これまではITサービス企業がコンテナの導入を牽引してきましたが、2021年調査ではサービス業、金融、製造など幅広い業種での導入が進んでいることが分かりました。様々な企業がDX(デジタルトランスフォーメーション)を進めていく中でアプリケーションのクラウドネイティブ化に取り組んでおり、コンテナ環境はその基盤としての採用が急速に進んでいます。
2021年 国内コンテナ/Kubernetesに関するユーザー導入調査結果を発表」では、日本企業のDockerコンテナー本番導入率はまだまだ2割未満の普及率です。
ただし、Dockerはビジネスにおけるシステムの本番環境でも有益です。先程紹介した「Why Docker?」ページの中で、ビジネスに対して貢献していることが6つ紹介されています。
- 新しいサービスの市場投入を3倍早く
- 開発者の生産性を13倍向上
- デプロイの時間を60%向上
- ITインフラコストを40%削減
- IT運用効率を40%向上
- 問題解決までの時間を72%削減
今後本番環境への導入が進んでくるとよりDockerの恩恵を受けて効率化が進んでいくでしょう。これは、働き方などを含めて時代に即しているサービスのため拡大シていくことでしょう
ちなみに、大手クラウドベンダーでは、Dockerやコンテナに関するページやサービスは充実していますので参考にしてください。
- Azure:Azure 上の Docker
- AWS:Docker とは
- Alibaba:Container Service
- GCP:GOOGLE のコンテナ
KUSANAGI Runs on Dockerとは
超高速CMS実行環境「KUSANAGI」をDocker上で利用することにより、WordPress等のCMSを高速・セキュアに動作させることができます。
- WordPressのほか、concrete5、Drupal 7/8、LAMP、LEMP環境としても利用できます。
- 動作環境として、nginx、Apache、php7、MariaDBを利用できます。
- 確認済みのOSは、CentOS7、Ubuntu18.04、Windows10(WSL + Docker Desktop for Windows)、macOS(Docker Deskotp for Mac)です。
- 使用するdocker-compose.yml ファイルの自動生成が可能です。
- データベースのデータベース名、ユーザ名、パスワード情報などの自動生成が可能です。
- データベースの内容および生成したコンテンツのバックアップ・リストアが可能です。
KUSANAGIが利用できるまたは採用しているサーバー
KUSANAGIが利用できるクラウド/VPS
無償版のKUSANAGIはビジネスユース向けの「Business Edition」、Web高速化エンジン搭載の最上位版「Premium Edition」にアップグレートできます。
KUSANAGI for IBM Cloud(Bluemix)
KUSANAGI for Microsoft Azure
KUSANAGI for Microsoft Azure Business Edition
KUSANAGI for Microsoft Azure Premium Edition
KUSANAGI for AWS
KUSANAGI for AWS Business Edition
KUSANAGI for AWS Premium Edition
KUSANAGI on Alibaba Cloud
KUSANAGI on Alibaba Cloud Business Edition
KUSANAGI for GCP
KUSANAGI for GCP Business Edition
KUSANAGI for GCP Premium Edition
KUSANAGI on FUJITSU Cloud Service for OSS
KUSANAGI Business Edition on FUJITSU Cloud Service for OSS
KUSANAGI Premium Edition on FUJITSU Cloud Service for OSS
など
KUSANAGIが利用できるソフトウェア
KUSANAGI Runs on Docker
KUSANAGI for VMware
KUSANAGI for Vagrant
KUSANAGIが利用できるホスティングサービス
KAGOYA JAPAN WordPress専用サーバー
WordPress最適化サーバー HAYABUSA
KUSANAGIの技術を採用しているサービス
エックスサーバー
wpXシン・レンタルサーバー
wpX Speed
KUSANAGI RoD 概念図
各コンテナの説明
名称 | 説明 |
---|---|
httpd | nginxもしくはhttpdが動作します。 |
php | PHP-FPMが動作します。httpd コンテナとの通信はhttpdのネットワークを共有して行います。アプリケーションはkusanagiボリュームに配置します。 |
db | MySQLもしくは、Postgresqlが動作します。 |
config | kusanagi-docker configコマンドは、kusanagiおよびdbボリュームを操作し、アプリケーション配置・バックアップ・リストアなどを行います。 WordPress構築時はwpcli のコマンドが使用できます。 |
ftp | WordPressでprovisionしたときのみ起動します。phpコンテナからftp通信し、WordPress core・プラグイン・テーマの更新を、WordPressのWeb画面経由で行います。 |
kusanagi-dockerコマンドとは
Dockerにプロビジョニング(上記必要なコンテナ)を作成したり構築されたコンテナ群を操作するためのコマンド
コマンドフォーマット
kusanagi-docker {サブコマンド}{オプション}
Kusanagi RoDで使用できるコマンドのリストです
タイプ | サブコマンド | オプション | 説明 | 例 |
---|---|---|---|---|
新規環境構築 | provision | –wp –wplang –admin-user –admin-pass –admin-email –wp-title –kusanagi-pass –dbname –dbuser –dbpass –http-port –tls-port –fqdn プロビジョン名 | kusanagi-docker provision –wp –wplang=ja –admin-user=sinceretechnology –admin-pass=xxx –admin-email=admin@abc.com –wp-title=test –kusanagi-pass=xxx –dbname=wptest –dbuser=wptest –dbpass=xxx –http-port=80 –tls-port=443 –fqdn wp.local wp-local | |
新規環境構築 | remove | kusanagi-docker remove food.local | ||
ステータス変更 | start/stop/restart/status | kusanagi-docker wp db query | ||
SSL関連操作 | ssl | _ | ||
–hsts on|off | HTTPS設定有無 | _ | ||
–redirect | –noredirect | リダイレクト有無 | _ | ||
–cert file –key file | KEY設定 | _ | ||
環境操作 | config | _ | ||
push | contentsフォルダ内に展開 | kusanagi-docker config push | ||
pull | contentsフォルダをコンテナに格納 | kusanagi-docker config pull | ||
WP-CLI操作 | wp | wp-cli のコマンドが使える | _ | |
db query | kusanagi-docker wp db query | |||
search-replace | kusanagi-docker wp search-replace | |||
バックアップ関連 | import/export | _ | ||
Docker Composeとは
Docker Composeとは、複数のDockerコンテナからなるアプリケーションを定義し、操作するためのツールです。
Dockerイメージの作成方法やコンテナ起動時の設定などを「docker-compose.yml」に記述することで、「docker compose」コマンドでまとめて操作できるようになります。
概念図
Docker Composeコマンド
docker-compose.ymlに記載されているDockerのサービスに対して操作するコマンドです。
カレントディレクトリにdocker-compose.ymlが置かれている必要があります
サブコマンド | オプション | 説明 | 例 |
---|---|---|---|
start | コンテナを開始 | ||
stop | コンテナを停止 | ||
restart | コンテナを再起動 | ||
down | ネットワークとコンテナを削除 | docker-compose down | |
up | コンテナを起動 | _ | |
-d | バックグラウンドで起動 | docker-compose down up -d | |
exec | コンテナでコマンドを実行 | _ | |
run | 新しくコンテナを作成してコマンドを実行 | _ | |
-it | コンテナとホストの標準入出力をそれぞれつなぐ | docker-compose run -it コンテナ名 /bin/bash | |
build | Dockerfileからイメージを作成 | docker-compose build | |
rm | コンテナの削除 | – |
Docker とは
概念図
Dockerコマンド
対象のDockerを直接操作するコマンドです
Dockerコマンド | 説明 | フォーマット |
---|---|---|
ps | コンテナ一覧 | docker-compose down |
start | コンテナ開始 | _ |
stop | コンテナ停止 | docker-compose down up -d |
rm | コンテナ削除 | docker-compose build |
run | イメージからコンテナ生成してコマンド実行 | docker exec -it イメージ名 コマンド名 |
exec | コンテナ内に入ってコマンド実行 | docker exec -it コンテナ名 コマンド名 |
commit | コンテナ内の変更をイメージに反映 | _ |
Dockerコマンドに設定可能なオプションです
Docker オプション | 説明 | コマンド例 |
---|---|---|
–name | コンテナ名を指定 | docker run –name “demo” centos |
-d | バックグラウンドで実行 | docker run -d centos |
-t | コンテナの標準出力をホストの標準出力につなげる | docker run -t centos |
-i | ホストの入力をコンテナの標準出力につなげる | docker run -i centos |
-it | ホストとコンテナの標準入出力をつなげる | docker run -it centos |
-p [ホスト側のポート番号]:[コンテナのポート番号] | ポートフォワーディング | docker run -d -p 2023:23 sshd |
-v | dockerコンテナとホスト間でファイルを共有する | docker run -v ~/src:/var/www/html httpd |
–rm | コンテナ停止とともにコンテナ削除 | docker run –rm centos |
参考情報
Docker公式サイト
この記事についてのご質問またはお困りのことがございましたら、お気軽にお問い合わせください。