DigitalOcean示例
预计阅读时间:5分钟
跟随此示例创建Dockerized DigitalOcean Droplet(云主机)。
步骤1.创建一个DigitalOcean帐户
如果尚未这样做,请转到DigitalOcean,创建一个帐户,然后登录。
步骤2.生成个人访问令牌
生成访问令牌:
-
转到DigitalOcean管理员控制台,然后单击标题中的API。
-
单击生成新令牌以转到令牌生成器。
-
为令牌指定一个描述性名称,确保选中了Write(可选)复选框,然后单击Generate Token。
-
抓取(复制到剪贴板)生成的大长十六进制字符串,并将其存储在安全的地方。
这是下一步创建您的云服务器时使用的个人访问令牌。
步骤3.使用Machine创建Droplet
-
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上的远程连接。 -
转到DigitalOcean控制台以查看新的Droplet。
-
在命令终端上,运行
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命令
-
运行一些
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": "", ...
-
通过运行
docker
命令验证Docker Engine是否已正确安装。从类似之类的基本内容开始
docker run hello-world
,或者进行更有趣的测试,在新的远程计算机上运行Dockerized网络服务器。在此示例中,该
-p
选项用于从nginx
容器公开端口80,并使其8000
在docker-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
命令中公开的端口。
第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
。