Amazon Web Services(AWS)EC2示例

预计阅读时间:6分钟

遵循此示例,以创建Dockerized Amazon Web Services(AWS) EC2实例。

步骤1.注册AWS并配置凭证

  1. 如果您还不是AWS用户,请注册AWS以创建一个帐户并获得对EC2云计算机的root访问权限。

    如果您拥有一个Amazon帐户,则可以将其用作您的root用户帐户。

  2. 创建一个IAM(身份和访问管理)管理员用户,一个管理员组以及一个与区域关联的密钥对。

    在AWS菜单中,选择服务> IAM以开始使用。

    要在AWS上创建机器,您必须提供两个参数:

    • 一个AWS Access Key ID

    • 一个AWS秘密访问密钥

    请参阅有关使用Amazon EC2进行设置的AWS文档。请遵循“创建IAM用户”和“创建密钥对”的步骤。

第2步。使用计算机创建实例

  1. (可选)创建一个AWS凭证文件。

    您可以创建一个~/.aws/credentials文件来保存您的AWS密钥,这样就不必每次运行docker-machine create 命令时都键入它们。这是凭证文件的示例。

    [default]
    aws_access_key_id = AKID1234567890
    aws_secret_access_key = MY-SECRET-KEY
    
  2. 运行docker-machine createamazonec2驱动程序,凭证入站端口,区,并为新的实例的名称。例如:

    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
    
  3. 转到AWS EC2仪表板以查看新实例。

    使用您的IAM凭据登录到AWS,然后导航到您的EC2运行实例。

    EC2仪表板上的实例

    注意:为确保您可以看到新实例,请从右上角的菜单中选择区域。如果您未指定区域作为其一部分docker-machine create(带有可选--amazonec2-region标志),请选择默认的美国东部(弗吉尼亚北部 )。

  4. 确保您的新计算机是活动主机。

    $ 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)

  5. 检查远程主机。例如,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命令。

  1. 通过下载并运行hello-world映像在活动的docker机器上运行docker:

    docker run hello-world
    
  2. 确保您在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
    
  3. 将aws-sandbox重置为活动的docker机器:

     eval $(docker-machine env aws-sandbox)
    

    要进行更有趣的测试,请在新计算机上运行Dockerized网络服务器。

    注意:在此示例中,我们使用8000在期间添加到docker-machine AWS Security Group中的端口docker-machine create。要在另一个端口上运行容器,请更新安全组以反映该情况。

    在此示例中,该-p选项用于从nginx 容器公开端口80并使其8000aws-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命令中公开的端口 。

    Nginx Web服务器

步骤4.使用计算机删除实例

要删除实例及其所有容器和图像,请先停止计算机,然后使用docker-machine rm

接下来要去哪里

码头工人机器AWS