UbuntuでDocker(docker.ioパッケージ)をインストールすると、デフォルト状態ではUNIXソケットでのみ通信するように設定されています。
しかし、PhpStormをはじめとするIDEと連携させる際、TCP経由でDockerデーモンをコントロールしたくなることがあります。
UbuntuではDockerデーモンを、OS標準のデーモン管理システムであるSystemdを使用して起動させているため、SystemdのDockerデーモンの定義ファイルを編集することで、Dockerデーモンの設定を変更することが可能です。
Ubuntuの場合、DockerデーモンのSystemd用の定義ファイル(サービス設定ファイル)は下記のパスにあります。
/usr/lib/systemd/system/docker.service
上記のファイルを管理者権限で開き、下記のように編集します。
編集前:
ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
編集後:
(オプション -H tcp://127.0.0.1:2375 を追加)
ExecStart=/usr/bin/dockerd -H fd:// -H tcp://127.0.0.1:2375 --containerd=/run/containerd/contain erd.sock
なお、127.0.0.1の部分を変更すれば、外部ネットワーク越しにDockerのコントロールポートを開放することも可能ですが、アクセス制御が適切になされていないとDockerそのものが乗っ取られる可能性があり、非常に危険なため、通常はlocalhostに対してのみ許可することをお勧めします。
設定の変更が完了したら、下記コマンドでDockerデーモンを再起動します。
sudo systemctl daemon-reload // 設定再読み込み
sudo systemctl restart docker // dockerデーモン再起動
これでDockerがTCPポートとUNIXソケット双方で待ち受けるようになります。