メニュー
Amazon ECR
ユーザーガイド (API Version 2015-09-21)

Docker の基本

Docker は、Linux コンテナに基づいた分散アプリケーションの構築、実行、テスト、デプロイを可能にするテクノロジーです。Amazon ECR はマネージド型 AWS Docker レジストリサービスです。お客様は一般的な Docker CLI を使用してイメージをプッシュ、プル、管理できます。Amazon ECR 製品の詳細、主なお客様導入事例、FAQ については、Amazon EC2 Container Registry 製品の詳細ページを参照してください。

このガイドのドキュメントは、読者が Docker の概念と機能を基本的に理解していることを前提としています。Docker の詳細については、「Docker とは」とDocker ユーザーガイド を参照してください。

Docker のインストール

Docker は、Ubuntu のような最新の Linux ディストリビューションから Mac OSX や Windows まで、さまざまなオペレーティングシステムで使用できます。特定のオペレーティングシステムに Docker をインストールする方法の詳細については、Docker インストールガイド を参照してください。

Docker を使用するには、ローカルの開発システムすら必要ありません。Amazon EC2 をすでに使用している場合は、Amazon Linux インスタンスを起動し、Docker をインストールして使用し始めることができます。

Amazon Linux インスタンスに Docker をインストールするには

  1. Amazon Linux AMI でインスタンスを起動します。詳細については、Linux インスタンス用 Amazon EC2 ユーザーガイド の 「インスタンスの起動」を参照してください。

  2. インスタンスに接続します。詳細については、『Linux インスタンス用 Amazon EC2 ユーザーガイド』の「Linux インスタンスへの接続」を参照してください。

  3. インスタンスでインストールされているパッケージとパッケージキャッシュを更新します。

    Copy
    [ec2-user ~]$ sudo yum update -y

  4. Docker をインストールします。

    Copy
    [ec2-user ~]$ sudo yum install -y docker

  5. Docker サービスを開始します。

    Copy
    [ec2-user ~]$ sudo service docker start Starting cgconfig service: [ OK ] Starting docker: [ OK ]

  6. ec2-userdocker グループに追加すると、sudo を使用せずに Docker コマンドを実行できます。

    Copy
    [ec2-user ~]$ sudo usermod -a -G docker ec2-user

  7. ログアウトし、再びログインして、新しい docker グループアクセス権限を取得します。

  8. ec2-usersudo を使用せずに Docker コマンドを実行できることを確認します。

    Copy
    [ec2-user ~]$ docker info Containers: 2 Images: 24 Storage Driver: devicemapper Pool Name: docker-202:1-263460-pool Pool Blocksize: 65.54 kB Data file: /var/lib/docker/devicemapper/devicemapper/data Metadata file: /var/lib/docker/devicemapper/devicemapper/metadata Data Space Used: 702.3 MB Data Space Total: 107.4 GB Metadata Space Used: 1.864 MB Metadata Space Total: 2.147 GB Library Version: 1.02.89-RHEL6 (2014-09-01) Execution Driver: native-0.2 Kernel Version: 3.14.27-25.47.amzn1.x86_64 Operating System: Amazon Linux AMI 2014.09

    注記

    場合によっては、Docker デーモンにアクセスするための ec2-user に対するアクセス権限を提供するため、インスタンスを再起動する必要があります。次のエラーが表示された場合は、インスタンスを再起動してください:

    Copy
    Cannot connect to the Docker daemon. Is the docker daemon running on this host?

Docker イメージを作成して する

このセクションでは、シンプルな PHP ウェブアプリケーションの Docker イメージを作成し、ローカルシステムまたは EC2 インスタンスでテストしてから。

PHP ウェブアプリケーションの Docker イメージを作成するには

  1. git をインストールし使用して、GitHub リポジトリからシステムにシンプルな PHP アプリケーションを複製します。

    1. git をインストールします。

      Copy
      [ec2-user ~]$ sudo yum install -y git

    2. システムにシンプルな PHP アプリケーションを複製します。

      Copy
      [ec2-user ~]$ git clone https://github.com/awslabs/ecs-demo-php-simple-app

  2. ディレクトリを ecs-demo-php-simple-app フォルダーに変更します。

    Copy
    [ec2-user ~]$ cd ecs-demo-php-simple-app

  3. このフォルダー内の Dockerfile を調べます。Dockerfile は、Docker イメージに使用する基本イメージと、そのイメージにインストールして実行するものを記述するマニフェストです。Dockerfile の詳細については、「Dockerfile リファレンス」を参照してください。

    Copy
    [ec2-user ecs-demo-php-simple-app]$ cat Dockerfile FROM ubuntu:12.04 # Install dependencies RUN apt-get update -y RUN apt-get install -y git curl apache2 php5 libapache2-mod-php5 php5-mcrypt php5-mysql # Install app RUN rm -rf /var/www/* ADD src /var/www # Configure apache RUN a2enmod rewrite RUN chown -R www-data:www-data /var/www ENV APACHE_RUN_USER www-data ENV APACHE_RUN_GROUP www-data ENV APACHE_LOG_DIR /var/log/apache2 EXPOSE 80 CMD ["/usr/sbin/apache2", "-D", "FOREGROUND"]
    この Dockerfile は Ubuntu 12.04 イメージを使用します。RUN 命令はパッケージキャッシュを更新し、ウェブサーバーと PHP サポート用にいくつかのソフトウェアパッケージをインストールしてから、PHP アプリケーションをウェブサーバーのドキュメントルートに追加します。EXPOSE 命令はコンテナ上のポート 80 を公開し、CMD 命令はウェブサーバーを起動します。

  4. Dockerfile から Docker イメージを構築し、デフォルトの Amazon ECR レジストリで amazon-ecs-sample としてタグ付けしますaws_account_id を AWS アカウント ID に置き換えます。

    注記

    Docker の一部のバージョンでは、下に示す相対パスの代わりに、次のコマンドで Dockerfile への完全パスが必要になる場合があります。

    Copy
    [ec2-user ecs-demo-php-simple-app]$ docker build -t aws_account_id.dkr.ecr.us-east-1.amazonaws.com/amazon-ecs-sample .

  5. docker images を実行して、イメージが正しく作成されたこと、イメージ名にプッシュ先のリポジトリ (この例では Amazon ECR registry) が含まれることを確認します。

    Copy
    [ec2-user ecs-demo-php-simple-app]$ docker images REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE aws_account_id.dkr.ecr.us-east-1.amazonaws.com/amazon-ecs-sample latest 8df953fe88f7 27 minutes ago 260.8 MB ubuntu 12.04 2a7a952931ec 3 weeks ago 136.1 MB

  6. 新しく構築されたイメージを実行します。-p 80:80 オプションは、コンテナ上の公開されたポート 80 をホストシステム上のポート 80 にマッピングします。docker run の詳細については、「Docker run リファレンス」を参照してください。

    Copy
    [ec2-user ecs-demo-php-simple-app]$ docker run -p 80:80 aws_account_id.dkr.ecr.us-east-1.amazonaws.com/amazon-ecs-sample apache2: Could not reliably determine the server's fully qualified domain name, using 172.17.0.2 for ServerName

    注記

    Apache ウェブサーバーからの出力はターミナルウィンドウに表示されます。"Could not reliably determine the server's fully qualified domain name" メッセージは無視できます。

  7. ブラウザーを開き、Docker を実行している、コンテナのホストサーバーを参照します。

    • EC2 インスタンスを使用している場合、これはサーバーの [Public DNS] 値であり、SSH でインスタンスに接続するときに使用するアドレスと同じです。インスタンスのセキュリティグループでポート 80 上の受信トラフィックを許可していることを確認します。

    • Docker をローカルに実行している場合は、ブラウザで http://localhost/ を参照します。

    • Windows または Mac コンピューターで docker-machine を使用している場合は、docker-machine ip コマンドを使用して Docker のホスト VirtualBox VM の IP アドレスを見つけ、machine-name を、使用中の Docker マシンの名前に置き換えます。

      Copy
      $ docker-machine ip machine-name 192.168.59.103

    ウェブページが開き、シンプルな PHP アプリケーションが実行中であることが示されます。

     シンプルな PHP アプリケーション

  8. Ctrl +c と入力して、Docker コンテナを停止します。

次のステップ

これで、イメージを作成してテストしたので、「Amazon ECR の使用開始」または「Amazon ECR での AWS CLI の使用」の手順に従って、Amazon ECR レジストリにプッシュできます。