【Docker開発環境】Dockerと必要なサービスおよびそのコマンドをざっくりと調べてみた

この記事は現役ウェブディベロッパーがわかりやすさにこだわって作成しました

「Docker」という言葉は最近よく耳にしますが、仮想環境を作る技術ですか。

Dockerによるコンテナ化の技術は、機能をモジュールごとにパッケージ化技術であって、VirtualBoxやVMのような仮想化の技術ではありません。しかし、仮想環境でもとても役に立つ技術です!

はじめに

ここではDocker開発環境構築に必要なサービスやツールおよびそのコマンドを紹介します。

まずはじめに国内でのDockerの利用状況について見てみます。

IDC - Article Not Found
IDC examines consumer markets by devices, applications, networks, and services to provide complete solutions for succeeding in these expanding markets.

2021年Dockerコンテナの導入状況に関するユーザー調査結果(調査年別)からの引用です

 コンテナの導入状況について調査した結果(参考資料)、本番環境で使用している企業は16.9%となり、2020年調査から2.7ポイント上昇しました。さらに導入構築/テスト/検証段階にある企業は23.3%となり、2020年調査から4.7ポイント上昇しました。この2つを合わせた40.2%の企業がコンテナの導入を進めていることになり、国内はコンテナの本格的な普及期に入りました。これまではITサービス企業がコンテナの導入を牽引してきましたが、2021年調査ではサービス業、金融、製造など幅広い業種での導入が進んでいることが分かりました。様々な企業がDX(デジタルトランスフォーメーション)を進めていく中でアプリケーションのクラウドネイティブ化に取り組んでおり、コンテナ環境はその基盤としての採用が急速に進んでいます。

2021年 国内コンテナ/Kubernetesに関するユーザー導入調査結果を発表」では、日本企業のDockerコンテナー本番導入率はまだまだ2割未満の普及率です。

2021年Dockerコンテナの導入状況に関するユーザー調査結果(調査年別)、Source: IDC Japan

ただし、Dockerはビジネスにおけるシステムの本番環境でも有益です。先程紹介した「Why Docker?」ページの中で、ビジネスに対して貢献していることが6つ紹介されています。

  1. 新しいサービスの市場投入を3倍早く
  2. 開発者の生産性を13倍向上
  3. デプロイの時間を60%向上
  4. ITインフラコストを40%削減
  5. IT運用効率を40%向上
  6. 問題解決までの時間を72%削減

今後本番環境への導入が進んでくるとよりDockerの恩恵を受けて効率化が進んでいくでしょう。これは、働き方などを含めて時代に即しているサービスのため拡大シていくことでしょう

ちなみに、大手クラウドベンダーでは、Dockerやコンテナに関するページやサービスは充実していますので参考にしてください。

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 概念図

各コンテナの説明

名称説明
httpdnginxもしくはhttpdが動作します。
phpPHP-FPMが動作します。httpd コンテナとの通信はhttpdのネットワークを共有して行います。アプリケーションはkusanagiボリュームに配置します。
dbMySQLもしくは、Postgresqlが動作します。
configkusanagi-docker configコマンドは、kusanagiおよびdbボリュームを操作し、アプリケーション配置・バックアップ・リストアなどを行います。
WordPress構築時はwpcli のコマンドが使用できます。
ftpWordPressで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
新規環境構築removekusanagi-docker remove food.local
ステータス変更start/stop/restart/statuskusanagi-docker wp db query
SSL関連操作ssl_
–hsts on|offHTTPS設定有無_
–redirect |
–noredirect
リダイレクト有無_
–cert file –key fileKEY設定_
環境操作config_
pushcontentsフォルダ内に展開kusanagi-docker config push
pullcontentsフォルダをコンテナに格納kusanagi-docker config pull
WP-CLI操作wpwp-cli のコマンドが使える_
db querykusanagi-docker wp db query
search-replacekusanagi-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
buildDockerfileからイメージを作成docker-compose build
rmコンテナの削除
Docker Composeとは?使い方やコマンドを紹介(Rails,MySQL,Nginx)
Dockerを使いこなすのであれば、「Docker Compose」を避けて通ることはできません。 Docker Composeを使うことで、Dockerでの環境構築や管理がとっても楽になるからです。 ちなみに、前回解説 ...

Docker とは

概念図

出典:https://penpen-dev.com/blog/docker-command/

Dockerコマンド

出典:https://hibiki-press.tech/dev-env/docker-tutorial/4989#toc5

対象の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
-vdockerコンテナとホスト間でファイルを共有するdocker run -v ~/src:/var/www/html httpd
–rmコンテナ停止とともにコンテナ削除docker run –rm centos

参考情報

Docker公式サイト

Docker Docs: How to build, share, and run applications
Docker Documentation is the official Docker library of resources, tutorials, and guides to help you build, share, and run applications.
Reference documentation
This section includes the reference documentation for the Docker platform’s various APIs, CLIs, and file formats.
PHP/Javascript/WORDPRESS案件全般承ります

この記事についてのご質問またはお困りのことがございましたら、お気軽にお問い合わせください。

タイトルとURLをコピーしました