(Update: 2020-09-05) A previous version of this article described using Docker Machine to solve this problem. As far as I can see, Docker Machine is no longer the recommended way of doing anything, as most if not all of its functionality has been integrated into other products. To launch droplets from the terminal, the current recommended way of doing so is through the
I’m looking to run a docker project on Digital Ocean. I could launch an Ubuntu droplet from the web interface and setup a Docker host on that, but I’d much rather run everything from the command line to make it easily repeatable.
To do that, we need a Digital Ocean token, so we head to the Digital Ocean API tokens page to create a new one.
We’ll use this shortly.
Digital Ocean has released
doctl, a CLI which is a wrapper around their REST API. It can be installed with homebrew:
$ brew install doctl
doctl using the following command, and paste in your token from the previous section:
$ doctl auth init Please authenticate doctl for use with your DigitalOcean account. You can generate a token in the control panel at https://cloud.digitalocean.com/account/api/tokens Enter your access token: Validating token... OK
Start by checking the hosts’ statuses:
$ doctl compute droplet list ID Name Public IPv4 Private IPv4 Public IPv6 Memory VCPUs Disk Region Image VPC UUID Status Tags Features Volumes ****** ancient-server xxx.xxx.64.140 512 1 20 sgp1 Ubuntu 2020-08-17 active backups,virtio ********* docker-droplet xxx.xx.37.221 1024 1 25 fra1 Ubuntu Docker 19.03.12 on Ubuntu 20.04 active
Now we can try and create a new VM. Like this one Docker Droplet.
$ doctl compute droplet create <name> --region <region-slug> --image <image-slug> --size <size-slug>
Or, in my particular case:
$ doctl compute droplet create DropletName \ --region Fra1 \ --image docker-20-04 \ --size s-1vcpu-1gb \ --ssh-keys 44:03:1b:13:dc:93:...
Note: if the
ssh-keys is not passed, the root password for your droplet will be sent to your e-mail address. If ssh keys are set up correctly, logging in is as simple as:
$ doctl compute ssh DropletName
If this doesn’t work, check that your ssh fingerprints match those saved in your Digital Ocean account:
$ doctl compute ssh-key list ID Name FingerPrint 28285948 new-cert 44:03:1b:13:dc:93:... 639996 AAAAB3NzaC1yc2EAAAADAQA... d5:9d:74:41:1c:e6:... $ ssh-keygen -l -E md5 -f ~/.ssh/id_rsa.pub 3072 MD5:44:03:1b:13:dc:93:... firstname.lastname@example.org (RSA)
In the above, the public key
~/.ssh/id_rsa matches the
new-cert in my Digital Ocean account. If it doesn’t, go ahead and add your current key to Digital Ocean and create the droplet again.
Deleting a droplet follows the same pattern:
$ doctl compute droplet delete DropletName