今回はMacOS上で開発をするうえで、DockerをREST APIを用いて操作する際のやり方を紹介していきたいと思います。
DockerはREST APIを用いてDockerコンテナ自体の立ち上げから停止などの様々な動作を執り行うことができます。
まず最初に、Dockerの設定を変更する必要があります。
まず最初にPreferencesをクリックします。
そうすると設定画面が表示されますので、その画面の
Docker Engineの項目をクリックしてください。
その後、JSON形式で設定が表示されるので、そこのhostsのところを
"hosts": [
"unix:///var/run/docker.sock"
],
となっているので、
"hosts": [
"unix:///var/run/docker.sock",
"tcp://0.0.0.0:2375"
],
となるように、します。
こうすることで、HTTPリクエストを受け付けるようになり、REST APIでの操作が可能になります。
ただし、これは全てのリクエストを受け付けるようにするものなので、場合によっては0.0.0.0
となっているところを127.0.0.1
等して調整する必要があります。
その後、Dockerを再起動してください。
次に、Dockerを動かすためにsocatをMacOS上にインストールしてください。
Homebrewがあるので、そこでインストールしてください。
brew install socat
でインストールできます。
その後、TCPでLISTENするようにコマンドを打ちます。
そのコマンドが下記です
socat TCP-LISTEN:2375,reuseaddr,fork UNIX-CONNECT:/var/run/docker.sock
で、DockerとホストOSが2375番のポートでやり取りができるようにしました。
ちなみにこのコマンドを実行すると、そのターミナルは使えなくなりますので、新しく開いてください。
※上記のコマンドはセキュリティ上リスクをはらみます。
もしMacOSを本番環境に使う場合はこのコマンドを実行するのは推奨されません。
次に、APIを叩きます。
Linuxでは、
http://IPアドレス:2375/containers/create
と叩きます。もちろん複数のMacOSでやり取りをする場合は別ですが、今回はホストOSにもう一台Dockerコンテナを立ち上げる前提です。
その場合はIPアドレスの箇所を
host.docker.internal
に書き換えて叩いてください。
以上です。
ありがとうございました。