やりたいこと
- 任意のアプリの Docker コンテナをサクッと立ち上げたい
- かつグローバル IP アドレスを割り当てて外から接続したい
より具体的には、今回は mitmproxy
をインターネット上で動かして iPhone 等のスマートフォン端末からつなぎたかった、という感じです。
手順
DigitalOcean のアカウントを作成する
ここは割愛。
DigitalOcean のアクセストークンを作成
API -> Tokens -> Generate New Token から適当に名前をつけて作ります。
docker-machine で Docker 環境を作る
docker-machine
のインストール手順については割愛。
Mac だと Homebrew でもインストールできるので適当にやっておく。
$ docker-machine create --driver digitalocean --digitalocean-access-token=ACCESS_TOKEN --digitalocean-region=sgp1 mitmproxy
--digitalocean-access-token
には前の手順で作ったアクセストークンを指定。
--digitalocean-region
にはリージョンの slug を指定します。
省略すると New York にできてレイテンシが辛いので、日本からだとシンガポールでも指定しておくのがいいでしょう。
リージョンの slug 一覧はこんな感じに最新版を取得できます。
$ curl -H "Content-Type: application/json" -H "Authorization: Bearer ACCESS_TOKEN" "https://api.digitalocean.com/v2/regions" -s | jq '.regions[] | "\(.slug)\t\(.name)"' -r | sort
ams2 Amsterdam 2
ams3 Amsterdam 3
blr1 Bangalore 1
fra1 Frankfurt 1
lon1 London 1
nyc1 New York 1
nyc2 New York 2
nyc3 New York 3
sfo1 San Francisco 1
sfo2 San Francisco 2
sgp1 Singapore 1
tor1 Toronto 1
末尾の mitmproxy
という部分は Docker 環境に任意の名前をつけるだけなので適当に。
数分かかりますがトイレ行ってコーヒーでも淹れて来たりすれば終わっているでしょう。
Docker コンテナの起動
Dockerfile を拾ってこれるような場合は Docker Hub のページ見ながら適当に。
信頼していい Dockerfile なのかは注意する。
今回は mitmproxy/mitmproxy のイメージを使いました。
# Docker への接続情報をターミナルのセッションに読み込む
$ eval $(docker-machine env mitmproxy)
# Docker コンテナの起動
$ docker run --rm -it -p 8080:8080 mitmproxy/mitmproxy
IP アドレスの確認
今回は外部から接続する前提なので。
DigitalOcean の Droplets の一覧から見てもいいです。
$ docker-machine ip mitmproxy
128.199.***.***
Docker 環境を削除する
使い捨て前提なので削除しておきます。
$ docker-machine rm mitmproxy
アクセストークンも DigitalOcean のページ上から削除しておくとより安心でしょう。
まとめ
こういうシュッとサーバなりコンテナなり必要なとき DigitalOcean は便利なのでアカウントを持っていない人は作っておきましょう。 (アフィリエイトリンク)