DigitalOcean示例

预计阅读时间:5分钟

跟随此示例创建Dockerized DigitalOcean Droplet(云主机)。

步骤1.创建一个DigitalOcean帐户

如果尚未这样做,请转到DigitalOcean,创建一个帐户,然后登录。

步骤2.生成个人访问令牌

生成访问令牌:

  1. 转到DigitalOcean管理员控制台,然后单击标题中的API

    在DigitalOcean控制台中单击API

  2. 单击生成新令牌以转到令牌生成器。

    生成令牌

  3. 为令牌指定一个描述性名称,确保选中了Write(可选)复选框,然后单击Generate Token

    命名并生成令牌

  4. 抓取(复制到剪贴板)生成的大长十六进制字符串,并将其存储在安全的地方。

    复制并保存个人访问令牌

    这是下一步创建您的云服务器时使用的个人访问令牌。

步骤3.使用Machine创建Droplet

  1. docker-machine create使用digitalocean驱动程序运行,并将密钥--digitalocean-access-token以及新云服务器的名称传递给标志。

    在此示例中,新的Droplet称为docker-sandbox

    $ docker-machine create --driver digitalocean --digitalocean-access-token xxxxx docker-sandbox
    Running pre-create checks...
    Creating machine...
    (docker-sandbox) OUT | Creating SSH key...
    (docker-sandbox) OUT | Creating Digital Ocean droplet...
    (docker-sandbox) OUT | Waiting for IP address to be assigned to the Droplet...
    Waiting for machine to be running, this may take a few minutes...
    Machine is running, waiting for SSH to be available...
    Detecting operating system of created instance...
    Detecting the provisioner...
    Provisioning created instance...
    Copying certs to the local machine directory...
    Copying certs to the remote machine...
    Setting Docker configuration on the remote daemon...
    To see how to connect Docker to this machine, run: docker-machine env docker-sandbox
    

    创建Droplet后,Docker会生成一个唯一的SSH密钥,并将其存储在您的本地系统中~/.docker/machines。最初,这是用于供应主机。稍后,它在后台使用,可通过docker-machine ssh命令直接访问Droplet 。Docker Engine安装在云服务器上,并且将守护程序配置为接受使用TLS进行身份验证的TCP上的远程连接。

  2. 转到DigitalOcean控制台以查看新的Droplet。

    用Machine创建的DigitalOcean中的液滴

  3. 在命令终端上,运行docker-machine ls

     $ docker-machine ls
     NAME             ACTIVE   DRIVER         STATE     URL                         SWARM
     default          -        virtualbox     Running   tcp://192.168.99.100:2376
     docker-sandbox   *        digitalocean   Running   tcp://45.55.139.48:2376
    

    docker-sandbox计算机正在运行,并且是星号(*)指示的活动主机。创建新计算机时,命令外壳程序会自动连接到该计算机。如果由于某种原因您的新计算机不是活动主机,请运行docker-machine env docker-sandbox,然后 eval $(docker-machine env docker-sandbox)连接到该主机。

步骤4.在Droplet上运行Docker命令

  1. 运行一些docker-machine命令以检查远程主机。例如,docker-machine ip <machine>获取主机IP地址并docker-machine inspect <machine>列出所有详细信息。

     $ docker-machine ip docker-sandbox
     104.131.43.236
    
     $ docker-machine inspect docker-sandbox
     {
         "ConfigVersion": 3,
         "Driver": {
         "IPAddress": "104.131.43.236",
         "MachineName": "docker-sandbox",
         "SSHUser": "root",
         "SSHPort": 22,
         "SSHKeyPath": "/Users/samanthastevens/.docker/machine/machines/docker-sandbox/id_rsa",
         "StorePath": "/Users/samanthastevens/.docker/machine",
         "SwarmMaster": false,
         "SwarmHost": "tcp://0.0.0.0:3376",
         "SwarmDiscovery": "",
         ...
    
  2. 通过运行docker命令验证Docker Engine是否已正确安装。

    从类似之类的基本内容开始docker run hello-world,或者进行更有趣的测试,在新的远程计算机上运行Dockerized网络服务器。

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

第5步。使用机器移除液滴

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

$ docker-machine stop docker-sandbox
$ docker-machine rm docker-sandbox
Do you really want to remove "docker-sandbox"? (y/n): y
Successfully removed docker-sandbox

$ docker-machine ls
NAME      ACTIVE   DRIVER       STATE     URL                         SWARM
default   *        virtualbox   Running   tcp:////xxx.xxx.xx.xxx:xxxx

如果在运行这些命令时监视DigitalOcean控制台,请注意它会首先更新以反映Droplet已停止然后被删除。

如果使用Docker Machine创建主机,但通过云提供商控制台将其删除,则Machine不会跟踪服务器状态。将 docker-machine rm命令用于您通过创建的主机docker-machine create

接下来要去哪里

码头工人机器digitalocean