Amazon Web Services(AWS)EC2示例
预计阅读时间:6分钟
遵循此示例,以创建Dockerized Amazon Web Services(AWS) EC2实例。
步骤1.注册AWS并配置凭证
-
如果您还不是AWS用户,请注册AWS以创建一个帐户并获得对EC2云计算机的root访问权限。
如果您拥有一个Amazon帐户,则可以将其用作您的root用户帐户。
-
创建一个IAM(身份和访问管理)管理员用户,一个管理员组以及一个与区域关联的密钥对。
在AWS菜单中,选择服务> IAM以开始使用。
要在AWS上创建机器,您必须提供两个参数:
-
一个AWS Access Key ID
-
一个AWS秘密访问密钥
请参阅有关使用Amazon EC2进行设置的AWS文档。请遵循“创建IAM用户”和“创建密钥对”的步骤。
-
第2步。使用计算机创建实例
-
(可选)创建一个AWS凭证文件。
您可以创建一个
~/.aws/credentials
文件来保存您的AWS密钥,这样就不必每次运行docker-machine create
命令时都键入它们。这是凭证文件的示例。[default] aws_access_key_id = AKID1234567890 aws_secret_access_key = MY-SECRET-KEY
-
运行
docker-machine create
与amazonec2
驱动程序,凭证入站端口,区,并为新的实例的名称。例如:docker-machine create --driver amazonec2 --amazonec2-open-port 8000 --amazonec2-region us-west-1 aws-sandbox
注意:对于所有aws创建标志,请运行:
docker-machine create --driver amazonec2 --help
使用AWS凭证文件
如果您在凭据文件中设置密钥,则该命令看起来像这样来创建一个名为的实例
aws-sandbox
:docker-machine create --driver amazonec2 aws-sandbox
在命令行中指定键
如果没有凭据文件,则可以在命令行上使用标志
--amazonec2-access-key
和--amazonec2-secret-key
:docker-machine create --driver amazonec2 --amazonec2-access-key AKI******* --amazonec2-secret-key 8T93C******* aws-sandbox
暴露港口
要将入站端口暴露给新计算机,请使用标志
--amazonec2-open-port
:docker-machine create --driver amazonec2 --amazonec2-open-port 8000 aws-sandbox
指定地区
默认情况下,驱动程序在us-east-1(北弗吉尼亚州)区域中创建新实例。您可以使用该
--amazonec2-region
标志指定其他区域 。例如,在us-west-1(北加利福尼亚州)中创建aws-sandbox。docker-machine create --driver amazonec2 --amazonec2-region us-west-1 aws-sandbox
-
转到AWS EC2仪表板以查看新实例。
使用您的IAM凭据登录到AWS,然后导航到您的EC2运行实例。
注意:为确保您可以看到新实例,请从右上角的菜单中选择区域。如果您未指定区域作为其一部分
docker-machine create
(带有可选--amazonec2-region
标志),请选择默认的美国东部(弗吉尼亚北部 )。 -
确保您的新计算机是活动主机。
$ docker-machine ls NAME ACTIVE DRIVER STATE URL SWARM DOCKER ERRORS aws-sandbox * amazonec2 Running tcp://52.90.113.128:2376 v1.10.0 default - virtualbox Running tcp://192.168.99.100:2376 v1.10.0-rc4 digi-sandbox - digitalocean Running tcp://104.131.43.236:2376 v1.9.1
新
aws-sandbox
实例正在运行,并且是活动主机,如星号(*)所示。创建新计算机时,命令外壳程序会自动连接到该计算机。您还可以通过运行来检查活动状态docker-machine active
。注意:如果您的新计算机不是活动主机,请通过运行
docker-machine env aws-sandbox
并返回eval命令 来连接到它eval $(docker-machine env aws-sandbox)
。 -
检查远程主机。例如,
docker-machine ip <machine>
返回主机IP地址并docker-machine inspect <machine>
列出所有详细信息。$ docker-machine ip aws-sandbox 192.168.99.100 $ docker-machine inspect aws-sandbox { "ConfigVersion": 3, "Driver": { "IPAddress": "52.90.113.128", "MachineName": "aws-sandbox", "SSHUser": "ubuntu", "SSHPort": 22, ... } }
步骤3.在新实例上运行Docker命令
您可以从本地终端向活动的docker计算机运行docker命令。
-
通过下载并运行hello-world映像在活动的docker机器上运行docker:
docker run hello-world
-
确保您在aws-sandbox(而不是localhost或其他计算机)上运行了hello-world:
使用ssh登录到aws-sandbox并列出所有容器。您应该看到hello-world(状态为最近退出):
docker-machine ssh aws-sandbox sudo docker container ls -a exit
注销aws-sandbox,然后将此机器取消设置为活动状态。然后再次列出图像。您不应看到hello-world(至少不会看到相同的退出状态):
eval $(docker-machine env -u) docker container ls -a
-
将aws-sandbox重置为活动的docker机器:
eval $(docker-machine env aws-sandbox)
要进行更有趣的测试,请在新计算机上运行Dockerized网络服务器。
注意:在此示例中,我们使用
8000
在期间添加到docker-machine AWS Security Group中的端口docker-machine create
。要在另一个端口上运行容器,请更新安全组以反映该情况。在此示例中,该
-p
选项用于从nginx
容器公开端口80并使其8000
在aws-sandbox
主机的端口上可访问:$ 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 a285d7f063ea: Pull complete 2d7baf27389b: Pull complete ... Digest: sha256:ec0ca6dcb034916784c988b4f2432716e2e92b995ac606e080c7a54b52b87066 Status: Downloaded newer image for kitematic/hello-world-nginx:latest 942dfb4a0eaae75bf26c9785ade4ff47ceb2ec2a152be82b9d7960e8b5777e65
在Web浏览器中,转到调
http://<host_ip>:8000
出Web服务器主页。您<host_ip>
从docker-machine ip <machine>
上一步中运行的命令的输出中获得了。使用您在docker run
命令中公开的端口 。
步骤4.使用计算机删除实例
要删除实例及其所有容器和图像,请先停止计算机,然后使用docker-machine rm
。