Ubuntuで複数のWordPressアプリケーションをDockeriseしてデプロイする方法

提供:Dev Guides
移動先:案内検索

序章


WordPress は、世界で最も一般的に展開され、使用されているWebアプリケーションの1つになりました。 長年の絶え間ない開発のおかげで、WordPressとその利用可能なプラグイン/拡張機能に基づいて、ほぼ無限の量の異なるWebサイト(またはWebアプリケーション)を作成することが可能になりました。

このDigitalOceanの記事では、 Docker Linux Container Engineを使用して、ドッキングする方法を学習します(つまり、 パッケージ化して含む)Ubuntuクラウドサーバー上のWordPressアプリケーションを見つけて、単一のホストに複数のWordPressサイトをデプロイする最も簡単で安全な方法を見つけてください。

用語集


1. Dockerの概要


2. WordPressの概要


3. UbuntuへのDockerのインストール(最新)


4. Dockerでの作業


  1. コマンドラインインターフェイスの使用法とデーモン
  2. クライアントコマンド

5. Dockerfileの操作


  1. Dockerfilesとは何ですか?
  2. Dockerfileコマンドの概要

6. WordPressコンテナの作成


  1. 画像を引っ張る
  2. 公的にアクセス可能なWordPressコンテナの作成
  3. ローカルでアクセス可能なWordPressコンテナの作成
  4. コンテナのメモリ使用量の制限

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のドキュメントを確認してください。

投稿者: [[“%3Ca|https]] ://twitter.com/ostezer [[“%3C/a|”> OS]] Tezer