【Docker】AWSにDocker hostを作成する方法【入門】
AWSにDocker hostを作成する方法
AWSにDocker hostを作成し、管理する方法についてみていきます!
AWSを操作するため、AWSの認証情報を取得
まずはAWSのウェブ画面にログインします。
左上のサービス>セキュリティ、 アイデンティティ、 コンプライアンス>I AM
をクリックします。
左のメニューからユーザーを選択
ユーザーを追加をクリック
ここで任意のユーザー名を入れ、プログラムによるアクセスにチェックを入れます!
そして次のステップへ!!
既存のポリシーを直接アタッチをクリック!
Administrator Accessをチェックして
次のステップへをクリック!
確認して問題なければそのままユーザーを作成をクリックしましょう!
ユーザーが作成できました!
アクセスキーはAWSにアクセスする際の鍵となります。
それではこれらのキーをPCに設定しましょう!
AWSの認証情報をPCに設定
キー情報はdocker-machineコマンドでも設定できます。
ただ、毎回入力するのはめんどいのでhomeディレクトリ配下にAWSディレクトリを用意してここに設定を入れておきます。
$ mkdir ~/.aws
$ vim ~/.aws/credencial $ cat ~/.aws/credencial [default] aws_access_key_id = XXX aws_secret_access_key = XXX
XXXは先ほどのAWSの画面上に表示された値を入れましょう!
AWS EC2インスタンスをdocker-machineで作成
まずはウェブUI上でインスタンスが存在していないことを確認します。
ではコマンドからEC2インスタンスを作成してみます!
$ docker-machine create --driver amazonec2 --amazonec2-open-port 8000 --amazonec2-region ap-northeast-1 aws-sandbox
起動したインスタンスの8000ポートを外部に公開します。
regionには東京リージョンを指定し
hostにはaws-sandboxという名前を指定しています。
では実行します。
$ docker-machine create --driver amazonec2 --amazonec2-open-port 8000 --amazonec2-region ap-northeast-1 aws-sandbox Running pre-create checks... Creating machine... (aws-sandbox) Launching instance... Waiting for machine to be running, this may take a few minutes... Detecting operating system of created instance... Waiting for SSH to be available... Detecting the provisioner... Provisioning with ubuntu(systemd)... Installing Docker... Copying certs to the local machine directory... Copying certs to the remote machine... Setting Docker configuration on the remote daemon... Checking connection to Docker... Docker is up and running! To see how to connect your Docker Client to the Docker Engine running on this virtual machine, run: docker-machine env aws-sandbox
インスタンスが作成されました!
ではコンテナを起動してみましょう
まず操作対象のhostを指定します。
docker-machineで起動したhostを指定するときと同じで、以下のコマンドでhostを指定します。
$ eval $(docker-machine env aws-sandbox)
では、docker run コマンドでコンテナを起動します。
hello-worldコンテナでやってみます。
$ docker run -d -p 8000:80 --name webserver kitematic/hello-world-nginx Unable to find image 'kitematic/hello-world-nginx:latest' locally latest: Pulling from kitematic/hello-world-nginx 77c6c00e8b61: Pull complete 9b55a9cb10b3: Pull complete e6cdd97ba74d: Pull complete 7fecf1e9de6b: Pull complete 6b75f22d7bea: Pull complete e8e00fb8479f: Pull complete 69fad424364c: Pull complete b3ba6e76b671: Pull complete a956773dd508: Pull complete 26d2b0603932: Pull complete 3cdbb221209e: Pull complete a3ed95caeb02: Pull complete Digest: sha256:ec0ca6dcb034916784c988b4f2432716e2e92b995ac606e080c7a54b52b87066 Status: Downloaded newer image for kitematic/hello-world-nginx:latest e6def26304053e18a4db9eb8c41343b33281264960d6ea9b72b9fdeec5f1ad94
それではipを確認して、ブラウザからみてみましょう!
docker-machine ip aws-sandbox 13.231.242.178
ブラウザから確認すると正常にコンテナが起動していますね!
コンテナを止めちゃいましょう
$ docker-machine stop aws-sandbox Stopping "aws-sandbox"... Machine "aws-sandbox" was stopped.
最後にこのコンテナを削除します!
$ docker-machine rm aws-sandbox About to remove aws-sandbox WARNING: This action will delete both local reference and remote instance. Are you sure? (y/n): y Successfully removed aws-sandbox