ステータス:非推奨

この記事は非推奨になり、保守されなくなりました。

理由

この記事の手法は時代遅れであり、Dockerのベストプラクティスを反映していない可能性があります。

代わりに参照してください

序章


ほとんどのWebアプリケーションでは、CPUがドロップされたHTTP要求の原因であるか、それらをホストしているWebサーバーを窒息させていることを見つけることは非常にまれです。 これは通常、キャッシュレイヤーが関与しない、設計が不十分なセットアップであり、バックエンドデータストアのすべてのリソースを消費します(つまり、 選択したデータベース)。

Memcached (これまでは紹介する必要はありません)は、使用可能なリソースを変更することなく、アプリケーションデプロイメントスタックのパフォーマンスを大幅に向上させることができます(ジュースの最後のビットをすべて絞ることができます)。

このDigitalOceanの記事では、特に複数のWebアプリケーションをホストしている人を念頭に置いてください(例: 複数のWordPressインスタンス、Pythonアプリケーションなど)、 docker イメージを作成して、個別に操作できる Memcachedコンテナーの実行をすばやく開始します(オンデマンド)。 これらのコンテナーは、独自の環境内で保持および保護されており、ホストされているアプリケーションと連携して、コンテナーの改善と高速化を支援します。

用語集


1. Dockerの概要


2. Memcachedの概要


3. UbuntuへのDockerのインストール


4. 基本的なDockerコマンド


  1. Dockerデーモンの実行とCLIの使用法
  2. dockerコマンド

5. Memcachedイメージの作成を開始する


  1. 簡単な要約:Dockerfilesとは何ですか?
  2. Dockerfileコマンドの概要
  3. Dockerfileの作成
  4. 最終的なDockerfile
  5. MemcachedコンテナのDockerイメージの作成

6. ドッキングされたMemcachedコンテナの実行


  1. Memcachedでインストールされたコンテナの作成
  2. Memcachedコンテナのメモリを制限する
  3. Memcachedコンテナのテスト

Dockerの概要


dockerプロジェクトは、いくつかのLinuxカーネル機能の上に構築された、連携して動作する高レベルのツールを提供します。 目標は、開発者とシステム管理者が、すべての依存関係を組み合わせてアプリケーションを移植し、システムとマシン間で実行できるようにすることです。頭痛の種はありません

Dockerは、安全なLXC(つまり、 Linux Containers)Dockerコンテナと呼ばれるアプリケーション用のベースの環境。 これらのコンテナーは、Dockerイメージを使用して作成されます。このイメージは、コマンドを手動で実行するか、Dockerfileを介して自動的に実行することで構築できます。

注: Dockerとそのパーツの詳細(例: dockerデーモン、CLI、イメージなど)、プロジェクトの紹介記事をチェックしてください: docker Explained:GettingStarted

Memcachedの概要


Memcachedは、分散型のオープンソースデータストレージエンジンです。 特定の種類のデータを(低速の従来のディスクではなく)RAMに保存して、アプリケーションによる非常に高速な取得を実現するように設計されており、より重いデータセットやAPIなどに対して実行されるクエリの数を減らすことでリクエストの処理にかかる時間を短縮します。従来のデータベース(例: MySQL)。

スマートで、よく計画され、最適化されたキャッシングメカニズムを導入することにより、一見大量のリクエストを処理し、アプリケーションによるより多くの手順を実行することが可能になります。 これは、他のキャッシングアプリケーションやコンポーネントと同様に、Memcachedの最も重要なユースケースです。

Memcachedは、Webサイトやその他のさまざまなアプリケーションの本番環境に大きく依存し、使用されており、追加のハードウェアを使用することなく、パフォーマンスを向上させるための頼りになるツールの1つになっています。 より多くのサーバーまたはサーバーリソース)。

これは、キーとそれに対応する(最大1 MBのサイズ)を連想配列(つまり、 ハッシュテーブル)これは、スケーリングして多数の仮想サーバーに分散できます。

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


VPSでDockerプロジェクトの使用を開始するには、Ubuntu 13.04用のDigitalOceanのDockerイメージを使用するか、自分でインストールします。 このセクションでは、Docker0.7.1の基本的なインストール手順について簡単に説明します。

Ubuntuのインストール手順


ドロップレットを更新します。

sudo aptitude    update
sudo aptitude -y upgrade

aufsサポートが利用可能であることを確認してください:

sudo aptitude install linux-image-extra-`uname -r`

パッケージ検証のためにDockerリポジトリキーをapt-keyに追加します。

sudo sh -c "wget -qO- https://get.docker.io/gpg | apt-key add -"

Dockerリポジトリをaptitudeソースに追加します。

sudo sh -c "echo deb http://get.docker.io/ubuntu docker main\
> /etc/apt/sources.list.d/docker.list"

新しい追加でリポジトリを更新します。

sudo aptitude    update

最後に、dockerをダウンロードしてインストールします。

sudo aptitude install lxc-docker

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の使用を開始する前に、最初の Getting Started の記事から、使用可能なコマンドをすばやく調べてメモリを更新しましょう。

Dockerデーモンの実行とCLIの使用法


インストール時に、dockerデーモンはバックグラウンドで実行され、dockerCLIによって送信されたコマンドを受け入れる準備ができている必要があります。 dockerを手動で実行する必要がある特定の状況では、以下を使用します。

Dockerデーモンの実行:

sudo docker -d &

docker CLIの使用法:

sudo docker [option] [command] [arguments]

注: dockerを機能させるには、sudo権限が必要です。

コマンドリスト


現在利用可能な(バージョン0.7.1)dockerコマンドの概要は次のとおりです。

添付


実行中のコンテナに接続する

建てる


Dockerfileからコンテナーを構築する

専念


コンテナの変更から新しいイメージを作成します

cp


コンテナファイルシステムからホストパスにファイル/フォルダをコピーします

差分


コンテナのファイルシステムの変更を検査します

イベント


サーバーからリアルタイムのイベントを取得する

書き出す


コンテナのコンテンツをtarアーカイブとしてストリーミングする

歴史


画像の履歴を表示する

画像


画像を一覧表示

輸入


tarballのコンテンツから新しいファイルシステムイメージを作成します

情報


システム全体の情報を表示する

入れる


画像にファイルを挿入する

検査する


コンテナに関する低レベルの情報を返します

殺す


実行中のコンテナを強制終了します

ロード


tarアーカイブから画像をロードする

ログインする


Dockerレジストリサーバーに登録またはログインします

ログ


コンテナのログを取得します

ポート


PRIVATE_PORTにNAT変換された公開ポートを検索します

ps


コンテナの一覧表示

引く


Dockerレジストリサーバーからイメージまたはリポジトリをプルします

押す


イメージまたはリポジトリをDockerレジストリサーバーにプッシュします

再起動


実行中のコンテナを再起動します

rm


1つ以上のコンテナを削除します

rmi


1つ以上の画像を削除する

走る


新しいコンテナでコマンドを実行する

保存する


画像をtarアーカイブに保存します


Dockerインデックスで画像を検索する

始める


停止したコンテナを起動します

止まる


実行中のコンテナを停止します

鬼ごっこ


画像をリポジトリにタグ付けする


コンテナの実行中のプロセスを検索します

バージョン


Dockerのバージョン情報を表示する

Memcachedイメージの作成を開始する


dockerシリーズの以前の記事から得た知識に基づいて、Dockerfileの構築に飛び込み、dockerにMemcachedでインストールされたイメージ(サンドボックス化されたMemcachedインスタンスの実行に使用される)を自動的に構築させましょう。

簡単な要約:Dockerfilesとは何ですか?


Dockerfileは、新しいdockerイメージを自動的に作成するために、dockerによって指定された順序で実行される、連続して宣言されたコマンドを含むスクリプトです。 それらは展開に大いに役立ちます。

これらのファイルは常に、FROMコマンドを使用したベースイメージの定義で始まります。 そこから、ビルドプロセスが開始され、実行された後続の各アクションが、ホスト上でコミット(イメージ状態の保存)を伴う最終を形成します。

使用法:

# Build an image using the Dockerfile at current location
# Tag the final image with [name] (e.g. *nginx*)
# Example: sudo docker build -t [name] .
sudo docker build -t memcached_img . 

注: Dockerfileの詳細については、次の記事をご覧ください: Dockerの説明:Dockerfileを使用したイメージの構築の自動化

Dockerfileコマンドの概要


追加


ホストからコンテナにファイルをコピーします

CMD


実行またはENTRYPOINTに渡されるデフォルトのコマンドを設定します

エントリーポイント


コンテナ内にデフォルトのエントリポイントアプリケーションを設定します

ENV


環境変数を設定します(例: 「キー=値」)

公開


ポートを外部に公開する

から


使用するベースイメージを設定します

メンテナ


Dockerfileの作成者/所有者データを設定します

走る


コマンドを実行し、終了結果(コンテナー)イメージをコミットします

ユーザー


イメージからコンテナーを実行するようにユーザーを設定します

音量


ホストからコンテナにディレクトリをマウントします

WORKDIR


実行するCMDのディレクティブのディレクトリを設定します

Dockerfileの作成


Dockerfileはプレーンテキストドキュメントで構成されているため、Dockerfileを作成すると、お気に入りのテキストエディターを起動し、イメージを構築するためにdockerに実行させるコマンドを記述します。 ファイルの作業を開始したら、最終結果を保存する前に、以下のすべてのコンテンツを(次々に)追加し続けます。

注:このセクションの最後で、最終的なDockerfileがどのようになるかを確認できます。

nanoテキストエディタを使用して空のDockerfileを作成しましょう:

nano Dockerfile

すべての命令(コマンド)とディレクティブを順番にリストする必要があります。 ただし、すべてはベースイメージ(FROMコマンドで設定)に基づいて構築することから始まります。

Dockerfileの目的を定義し、使用するベースイメージを宣言しましょう。

############################################################
# Dockerfile to run Memcached Containers
# Based on Ubuntu Image
############################################################

# Set the base image to use to Ubuntu
FROM ubuntu

# Set the file maintainer (your name - the file's author)
MAINTAINER Maintaner Name

この最初のコマンドと宣言のブロックの後、Memcachedのインストール手順の一覧表示から始めることができます。

# Update the default application repository sources list
RUN apt-get update

# Install Memcached
RUN apt-get install -y memcached

コンテナの外部に公開するデフォルトのポートを設定します。

# Port to expose (default: 11211)
EXPOSE 11211

デフォルトの実行コマンドとentrpointを設定します(つまり Memcachedデーモン):

# Default Memcached run command arguments
CMD ["-u", "root", "-m", "128"]

# Set the user to run Memcached daemon
USER daemon

# Set the entrypoint to memcached binary
ENTRYPOINT memcached

最終的なDockerfile


############################################################
# Dockerfile to run Memcached Containers
# Based on Ubuntu Image
############################################################

# Set the base image to use to Ubuntu
FROM ubuntu

# Set the file maintainer (your name - the file's author)
MAINTAINER Maintaner Name
  
# Update the default application repository sources list
RUN apt-get update

# Install Memcached
RUN apt-get install -y memcached

# Port to expose (default: 11211)
EXPOSE 11211

# Default Memcached run command arguments
CMD ["-m", "128"]

# Set the user to run Memcached daemon
USER daemon

# Set the entrypoint to memcached binary
ENTRYPOINT memcached

すべてをDockerfile内に書き込んだら、それを保存し、CTRL+Xに続けてYを押して終了します。

このDockerfileを使用して、ドッキングされたMemcachedコンテナーを開始する準備が整いました。

MemcachedコンテナのDockerイメージの作成


これで、Dockerfileの基本セクションで説明されている使用手順に従って、最初のMemcachedイメージを作成できます。

次のコマンドを実行して、「memcached_img」というタグが付けられたイメージを作成します。

sudo docker build -t memcached_img .

注:dockerがDockerfileを見つけるための末尾の.を忘れないでください。

ドッキングされたMemcachedコンテナの実行


前のセクションで取得したイメージのおかげで、完全に分離された自己完結型のmemcachedインスタンス( now )をいくつでも作成するのは非常に簡単です。 docker runで新しいコンテナを作成するだけです。

Memcachedでインストールされたコンテナの作成


新しいコンテナを作成するには、次のコマンドを使用して、この例に従って要件に合うように変更します。

# Example: sudo docker run -name [container name] -p [port to access:port exposed] -i -t [memcached image name]
sudo docker run -name memcached_ins -d -p 45001:11211 memcached_img

これで、ポート 45001 runから、以前に作成した「memcached_img」というタグの付いたイメージを使用してアクセスできる、「memcached_ins」という名前のDockerコンテナが作成されます。

Memcachedコンテナのメモリを制限する


Dockerコンテナプロセスが使用できるメモリの量を制限するには、-m [memory amount]フラグに制限を設定するだけです。

256MBに制限されたメモリでコンテナを実行するには:

# Example: sudo 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]
sudo docker run -name memcached_ins -m 256m -d -p 45001:11211 memcached_img

メモリ制限を確認するために、コンテナを検査できます。

# Example: docker inspect [container ID] | grep Memory
sudo docker inspect memcached_ins | grep Memory

注:上記のコマンドは、検査出力からメモリ関連情報を取得します。 コンテナに関連するすべての情報を表示するには、sudo docker inspect [container ID]を選択してください。

Memcachedコンテナのテスト


新しく作成したMemcached実行コンテナを試すにはさまざまな方法があります。 これには、単純なPythonCLIアプリケーションを使用します。 ただし、キャッシュアドオン、フレームワーク、またはライブラリを使用して、アプリケーションで本番環境に移行することができます。

ホストにPython/Memcachedに必要なライブラリがあることを確認してください。

sudo apt-get update && sudo apt-get -y upgrade 
sudo apt-get install -y python-pip
pip install python-memcached

nanoを使用して「mc.py」という簡単なPythonスクリプトを作成しましょう。

nano cache.py

以下の(自明の)コンテンツをコピーして貼り付けます。

# Import python-memcache and sys for arguments
import memcache
import sys

# Set address to access the Memcached instance
addr = 'localhost'

# Get number of arguments
# Expected format: python cache.py [memcached port] [key] [value]
len_argv = len(sys.argv)

# At least the port number and a key must be supplied
if len_argv < 3:
    sys.exit("Not enough arguments.")

# Port is supplied and a key is supplied - let's connect!
port  = sys.argv[1]
cache = memcache.Client(["{0}:{1}".format(addr, port)])

# Get the key
key   = str(sys.argv[2])

# If a value is also supplied, set the key-value pair
if len_argv == 4:
    
    value = str(sys.argv[3])    
    cache.set(key, value)

    print "Value for {0} set!".format(key)

# If a value is not supplied, return the value for the key
else:

    value = cache.get(key)

    print "Value for {0} is {1}.".format(key, value) 

CTRL + Xを押し、Yで承認して保存して閉じます。

ホストから上記のスクリプトを使用してdockermemcachedインスタンスをテストします。

# Example: python cache.py [port] [key] [value]
python cache.py 45001 my_test_key test_value

# Return: Value for my_test_key set

# See if the key is set:
python cache.py 45001 my_test_key

# Return: Value for my_test_key is test_value.

dockerをインストールして使用するための完全な手順については、docker.ioにあるdockerのドキュメントを確認してください。

投稿者: https ://twitter.com/ostezer