Ubuntuで複数のWordPressアプリケーションをDockeriseしてデプロイする方法
序章
WordPress は、世界で最も一般的に展開され、使用されているWebアプリケーションの1つになりました。 長年の絶え間ない開発のおかげで、WordPressとその利用可能なプラグイン/拡張機能に基づいて、ほぼ無限の量の異なるWebサイト(またはWebアプリケーション)を作成することが可能になりました。
このDigitalOceanの記事では、 Docker Linux Container Engineを使用して、ドッキングする方法を学習します(つまり、 パッケージ化して含む)Ubuntuクラウドサーバー上のWordPressアプリケーションを見つけて、単一のホストに複数のWordPressサイトをデプロイする最も簡単で安全な方法を見つけてください。
用語集
1. Dockerの概要
2. WordPressの概要
3. UbuntuへのDockerのインストール(最新)
4. Dockerでの作業
- コマンドラインインターフェイスの使用法とデーモン
- クライアントコマンド
5. Dockerfileの操作
- Dockerfilesとは何ですか?
- Dockerfileコマンドの概要
6. WordPressコンテナの作成
- 画像を引っ張る
- 公的にアクセス可能なWordPressコンテナの作成
- ローカルでアクセス可能なWordPressコンテナの作成
- コンテナのメモリ使用量の制限
Dockerの概要
Dockerプロジェクトは、開発者とシステム管理者がすべての依存関係を組み合わせてアプリケーションを移植し、システムやマシン間で実行できるようにすることを目的として、いくつかのLinuxカーネル機能の上に構築された高レベルのツールを提供します。 X292X]頭痛のない。
Dockerは、イメージを使用して作成される「コンテナー」と呼ばれるアプリケーション用に、安全なLXC(Linuxコンテナー)ベースの環境を作成することでこれを実現します。 これらのコンテナのベースは、仮想マシンのように内部にログインしてコマンドを手動で実行するか、Dockerfilesを介してプロセスを自動化することで構築できます。
注: Dockerとそのパーツの詳細(つまり、 dockerデーモン、CLI、イメージなど)、プロジェクトの紹介記事 Dockerの説明:はじめにを確認してください。
WordPressの概要
WordPressは当初、インストールと使用が簡単な自費出版プラットフォームとして作成されました(つまり、 ブログエンジン)。 それは長年にわたって非常に人気があり、多くのサードパーティプラグインの開発につながり、ツールを完全なCMS(コンテンツ管理システム)に変えました。 WordPressに基づいて、さまざまな種類のWebサイトやWebアプリケーションを簡単に作成し、簡単に展開できます。
WordPressは、PHPプログラミング言語を使用して開発されたオープンソースプラットフォームであり、成功への道のりを確実に助けました。 PHPは現在、最も一般的なWebサイトおよびWebアプリケーション作成言語のひとつであり、多くの企業(Facebookを含む)が選択しています。
WordPressサイトはデータを保持するためにMySQLリレーショナルデータベースに依存しており、PHPとMySQLを一緒に実行するために利用できる複数の選択肢があるため、WordPressサイトを強化する方法は複数あります。
この記事では、WordPressがインストールされたDockerイメージを作成するための実証済みの方法を使用します。これにより、Dockerを使用して1つのコマンドで、任意のVPSで別のWordPressサイトを実行できるようになります。
UbuntuへのDockerのインストール(最新)
ドロップレットを更新します
sudo apt-get update sudo apt-get -y upgrade
aufsサポートが利用可能であることを確認してください
sudo apt-get install linux-image-extra-`uname -r`
パッケージ検証のためにDockerリポジトリキーをapt-keyに追加します
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 36A1D7869245C8950F966E92D8576A8BA88D21E9
Dockerリポジトリをソースに追加する
sudo sh -c "echo deb http://get.docker.io/ubuntu docker main\ > /etc/apt/sources.list.d/docker.list"
リポジトリを更新する
sudo apt-get update
Dockerをダウンロードしてインストールする
sudo apt-get install lxc-docker git
Ubuntuのデフォルトファイアウォール(UFW:Uncomplicated Firewall)は、デフォルトですべての転送トラフィックを拒否します。これは、dockerで必要です。
UFWで転送を有効にする
nanoテキストエディタを使用してUFW設定を編集します。
sudo nano /etc/default/ufw
下にスクロールして、DEFAULT_FORWARD_POLICYで始まる行を見つけます。
交換:
DEFAULT_FORWARD_POLICY="DROP"
と:
DEFAULT_FORWARD_POLICY="ACCEPT"
CTRL + Xを押し、Yで承認して保存して閉じます。
UFWをリロードします
sudo ufw reload
リモート接続の許可
docker
デーモンをリモートで使用することを計画している場合は、デフォルトのDockerポート4243を許可する必要があります。
sudo ufw allow 4243/tcp
Dockerでの作業
dockerの使用を開始する前に、最初の Getting Started の記事から、使用可能なコマンドをすばやく調べてメモリを更新しましょう。
コマンドラインインターフェイスの使用法とデーモン
インストール時に、dockerデーモンはバックグラウンドで実行され、docker
クライアントから送信されたコマンドを受け入れる準備ができている必要があります。 Dockerを手動で実行する必要がある特定の状況では、以下を使用します。
Dockerデーモンの実行:
sudo docker -d &
クライアントの使用法:
sudo docker [option] [command] [arguments]
注: Dockerは、root
が所有するソケットを使用するため、動作するにはsudo権限が必要です。
クライアントコマンド
クライアントを呼び出すだけで、使用可能なすべてのコマンドの完全なリストを取得できます。
docker
バージョン0.8.0
の時点で使用可能なすべてのコマンドのリストは次のとおりです。
Commands: attach Attach to a running container build Build a container from a Dockerfile commit Create a new image from a container's changes cp Copy files/folders from the containers filesystem to the host path diff Inspect changes on a container's filesystem events Get real time events from the server export Stream the contents of a container as a tar archive history Show the history of an image images List images import Create a new filesystem image from the contents of a tarball info Display system-wide information insert Insert a file in an image inspect Return low-level information on a container kill Kill a running container load Load an image from a tar archive login Register or Login to the docker registry server logs Fetch the logs of a container port Lookup the public-facing port which is NAT-ed to PRIVATE_PORT ps List containers pull Pull an image or a repository from the docker registry server push Push an image or a repository to the docker registry server restart Restart a running container rm Remove one or more containers rmi Remove one or more images run Run a command in a new container save Save an image to a tar archive search Search for an image in the docker index start Start a stopped container stop Stop a running container tag Tag an image into a repository top Lookup the running processes of a container version Show the docker version information wait Block until a container stops, then print its exit code
Dockerfileの操作
Dockerfilesとは何ですか?
Dockerfileは、連続して宣言されたコマンドを含むスクリプトであり、Dockerによって指定された順序で実行され、新しいイメージが自動的に作成されます。
これらのファイルは常に、FROM
命令を使用したベースイメージの定義で始まります。 そこから、ビルドプロセスが開始され、後続の各アクションがコミットを含む最終イメージを形成します(つまり、 画像の状態を保存します)。
Dockerfileは、build
コマンドで使用できます。
# Build an image using the Dockerfile at current location # Tag the final image with [name] (e.g. *wordpress_img*) # Example: sudo docker build -t [name] . sudo docker build -t wordpress_img .
注: Dockerfileの詳細については、次の記事をご覧ください: Dockerの説明:Dockerfileを使用したイメージの構築の自動化。
Dockerfileコマンドの概要
Dockerfileは、以下の指示を受け取ることで機能します。
ADD
:ファイルをホストからコンテナーにコピーしますCMD
:実行される、またはENTRYPOINTに渡されるデフォルトのコマンドを設定しますENTRYPOINT
:コンテナ内のデフォルトのエントリポイントアプリケーションを設定しますENV
:環境変数を設定します(例: キー=値)EXPOSE
:ポートを外部に公開しますFROM
:使用するベースイメージを設定しますMAINTAINER
:Dockerfileの作成者/所有者データを設定しますRUN
:コマンドを実行し、終了結果(コンテナー)イメージをコミットしますUSER
:イメージからコンテナーを実行するようにユーザーを設定しますVOLUME
:ホストからコンテナにディレクトリをマウントしますWORKDIR
:実行するCMDのディレクティブのディレクトリを設定します
WordPressコンテナの作成
画像を引っ張る
このチュートリアルでは、tutum/wordpress
と呼ばれるすぐに使用できるWordPressイメージを使用します。 このワードプレスイメージは、Tutumのワードプレスイメージを使用して作成されます。このイメージからコンテナーを作成するには、最初にプル(ダウンロード)する必要があります。
画像を引っ張ってみましょう:
docker pull tutum/wordpress
このコマンドは、すべての変更されたレイヤーを含む基になるベースイメージをダウンロードします。
画像の準備ができたら、1つのコマンドを発行することで、ドッキングされたWordPressインスタンスを作成できます。
公的にアクセス可能なWordPressコンテナの作成
次のコマンドを実行して、指定したポートで外部から到達可能なコンテナを作成します(例: 80
):
# Usage: docker run -p [Port Number]:80 tutum/wordpress # Example: docker run -p 80:80 tutum/wordpress
上記のコマンドは、デフォルトのHTTPポート80
で外部からの接続を受け入れるWordPressインスタンスを作成します。
ローカルでアクセス可能なWordPressコンテナの作成
場合によっては、ローカルでのみコンテナに到達できるようにするのが最適な場合があります。 これは、ロードバランサーまたは別のリバースプロキシを設定して、多くのWordPressインスタンスに接続を分散する場合に役立ちます。
次のコマンドを実行して、ローカルでアクセス可能なコンテナを作成します。
# Allocate a port dynamically: # Usage: docker run -p 127.0.0.1::80 tutum/wordpress # Example: docker run -p 127.0.0.1::80 tutum/wordpress
上記のコマンドを実行すると、Dockerはコンテナを作成し、そのIDを提供してから、動的にポートを割り当てます。 port
コマンドを使用すると、コンテナーが使用しているポートを特定できます。
# Usage: docker port [container ID] [private port number] # Example: docker port 9af15d73fdf8a997 80 # 127.0.0.1:49156
この場合、出力は、コンテナがポート49156
のローカルホストでのみアクセス可能であることを意味します。 完全に提供されたアドレスを使用して、リバースプロキシからの接続をリダイレクトできます。
ポートを指定する場合は、IPアドレスと内部のWebサーバーで使用されるプライベートポートの間に配置します(例: 80
):
# Usage: docker run -p 127.0.0.1:[local port]:80 tutum/wordpress # Example: docker run -p 127.0.0.1:8081:80 tutum/wordpress
このようにして、ポート8081
でローカルにアクセスできるWordPressインスタンスが作成されます。
注:コンテナーをバックグラウンドで実行するには、run
コマンドの後に-d
フラグを追加する必要もあります。
docker run -d ..
それ以外の場合は、実行中のすべてのアプリケーションからの出力が表示されるコンテナにからに接続されます。
導入記事に示されているように、コンテナーを離れるには、エスケープシーケンスCTRL+Pの直後にCTRL+Qを使用する必要があります。
docker ps
コマンドを使用すると、実行中のコンテナーのリストを取得して、新しくインスタンス化されたコンテナーのIDを見つけることができます。
注: -name [name]
引数を使用すると、複雑なコンテナーIDを処理する必要がない名前のコンテナーにタグを付けることができます。
docker run -d -name new_container_1 ..
コンテナのメモリ使用量の制限
Dockerコンテナプロセスが使用できるメモリの量を制限するには、-m [memory amount]
フラグに制限を設定するだけです。
256MBに制限されたメモリでコンテナを実行するには:
# Example: docker run -name [name] -m [Memory (int)][memory unit (b, k, m or g)] -d (to run not to attach) -p (to set access and expose ports) [image ID] docker run -m 64m -d -p 8082:80 tutum/wordpress
メモリ制限を確認するには、コンテナを検査できます。
# Example: docker inspect [container ID] | grep Memory docker inspect 9a7562a361122706 | grep Memory
注:上記のコマンドは、検査出力からメモリ関連情報を取得します。 コンテナに関連するすべての情報を表示するには、sudo docker inspect [container ID]
を選択してください。 また、実際の制限が機能するには、Linuxカーネルがスワップ制限機能をサポートしている必要があることに注意してください。
dockerをインストールして使用するための完全な手順については、docker.ioにあるdockerのドキュメントを確認してください。