Dockerでリモートアクセスを有効にする方法

Dockerでリモートアクセスを有効にする方法

Dockerデーモンソケット

Docker デーモンは、 unixtcpfdの 3 種類のソケットを介して Docker Engine API リクエストをリッスンできます。

デフォルトでは、 unixドメイン ソケット (または IPC ソケット) が/var/run/docker.sockに作成されます。これには、 root権限またはdockerグループのメンバーシップが必要です。

Docker デーモンにリモートでアクセスする必要がある場合は、 tcpソケットを有効にする必要があります。デフォルト設定では、Docker デーモンへの暗号化されていない認証されていない直接アクセスが提供されるため、組み込みの HTTPS 暗号化ソケットを使用するか、その前に安全なwebプロキシを配置して保護する必要があります。 -H tcp://0.0.0.0:2375を使用してすべてのネットワーク インターフェイスのポート2375をリッスンするか、 -H tcp://ip:2375使用して IP アドレスを使用して特定のネットワーク インターフェイスのポート2375をリッスンすることができます。通常、デーモンとの暗号化されていない通信にはポート2375使用し、デーモンとの暗号化された通信にはポート2376使用します。

: HTTPS 暗号化ソケットを使用している場合は、 TLS1.0以上のみがサポートされていることに注意してください。セキュリティ上の理由から、 SSLv3以下はサポートされなくなりました。

docker.service を変更する

vim /usr/lib/systemd/system/docker.service

[Service]セクションで、 ExecStartパラメータを変更し、最後に-H tcp://0.0.0.0:2375を追加して、すべてのネットワーク インターフェイスでポート2375をリッスンします。

ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock -H tcp://0.0.0.0:2375

ここに画像の説明を挿入

設定ファイルを再読み込みしてサービスを開始します

systemctl デーモンをリロード && systemctl docker を再起動します
  • daemon-reload : サービス設定ファイルを再読み込みします。サービス設定ファイルが変更された場合は、再読み込みする必要があります。
  • restart : サービスを再起動します。

dockerdプロセスがポート2375でリッスンしているかどうかを確認します。

[root@izoq008ryseuupz ~]# netstat -antp | grep dockerd
tcp6 0 0 :::2375 :::* 22494/dockerdを聴く    

netstatコマンドは、ネットワークの状態を表示するために使用されます。一部のオプションには次の機能があります。

  • -aまたは--all : 接続されているすべてのソケットを表示します。
  • -nまたは--numeric : ドメイン ネーム サーバーを経由せずに IP アドレスを直接使用します。
  • -tまたは--tcp : TCP 送信プロトコルの接続ステータスを表示します。
  • -pまたは--programs : ソケットを使用しているプログラム識別コードとプログラム名を表示します。

テスト

次に、 localhost経由で Docker Engine API を使用できるかどうかをテストします。

[root@izoq008ryseuupz ~]# curl http://localhost:2375/version
{"Platform":{"name": "dockerエンジン - コミュニティ"}、 "コンポーネント":[{"name": "engine"、 "version": "19.03.13"、 "details":{"apiversion": "1.40"、 "arch": "amd64"、 "buildtime": "2020-09-16t17:02:02:02:000 000 "、" gitcommit ":" 4484c46d9d "、" goversion ":" go1.13.15 "、" kernelversion ":" 3.10.0-514.26.2.el7.x86_64詳細 ":{" gitcommit ":" 8fba4e9a7d01810a393d5d25a3621dc101981175 "}}、{" name ":" runc "、" 1.0.0-rc10 "、" 6df0a9dd "}}、{" name ":" docker-init "、" version ":" 0.18.0 "、" details ":{" gitcommit ":" fec3683 "}}]、"}、 ":" 19.03.13 "、" apiversion ":" 1.40 ":" "1.40" "" 1.40 9d "、" goversion ":" go1.13.15 "、" os ":" linux "、" arch ":" amd64 "、" kernelversion ":" 3.10.0-514.26.2.el7.x86_64 "、" buildtime ":" 2020-09-16t17:02:21.0000000+00 "

curl 、Web サーバーにリクエストするためによく使用されるコマンドライン ツールです。パラメータがない場合、 curl GET リクエストを作成します。

どうやら Docker Engine API はlocalhost経由で利用できるようです。

ホストIP経由でDocker Engine APIがリモートから使えるかテストしてみます。http http://ip:2375/versionリクエストして取得したページが下図の通りです。明らかに使えます。

ここに画像の説明を挿入

IDEAはリモート接続も可能です。

ここに画像の説明を挿入

起こりうる問題

リモートアクセスできない場合は、サーバーのファイアウォールの設定が必要かもしれません。ポート2375が公開されていないため、リモートアクセスができないのが原因のはずです。ブロガーのサーバーはAlibaba Cloud( Centos7.3 )です。

ここに画像の説明を挿入

Docker のリモート アクセスを有効にする方法については、これで終わりです。Docker リモート アクセスの詳細については、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • DockerコンテナはホストのMySQL操作にアクセスする
  • Docker コンテナのカスタム ホストのネットワーク アクセス操作
  • Docker ポート マッピングと外部アクセス不可の問題
  • DockerコンテナがJupyterにアクセスできない問題の解決策
  • Dockerモードで起動したTomcatのホームページにアクセスすると404エラーが発生する
  • Docker イメージのローカル Elasticsearch ポート操作へのアクセス
  • 突然外部ネットワークからDockerにアクセスできなくなる問題の解決方法

<<:  フロントエンドJavaScriptの動作原理

>>:  HTML チュートリアル: よく使われる HTML タグのコレクション (4)

推薦する

Win10 64ビットMySQL8.0のダウンロードとインストールのチュートリアル図

公式サイトから MySQL をダウンロードしてインストールし、クライアントにログインするにはどうすれ...

CentOS 6.4 で rpm を使用して MySQL をオフラインでインストールする

rpmインストールパッケージを使用してmysqlをオフラインでインストールします。参考までに準備:公...

モバイル端末におけるビューポートの具体的な使用法についての簡単な説明

目次1. 基本概念1.1 2種類のピクセル1.2 3つのビューポート2. ビューポート設定3. 1回...

Centos6.5 でのスーパーバイザーのアップグレード、インストール、および構成に関するチュートリアル

スーパーバイザー紹介Supervisor は、Python で開発されたクライアント/サーバー サー...

Linuxはデュアルネットワークカードボンドとドライバーインターフェースを使用する

債券とは何かNIC ボンドは、実稼働シナリオでよく使用されるテクノロジーです。複数の NIC を 1...

Windows 10 での Hyperledger Fabric 1.4 環境構築プロセスの図

内容Hyperledger fabric1.4環境のWindows 10でのセットアップ前提条件Wi...

CSSを使用して中央に固定された2つの列と適応型列を実現する方法

1. 絶対位置とマージンを使用するこの方法の原則は、左側と右側をドキュメントの流れから外れるように配...

MySQL 5.7.21 winx64 のインストールと設定方法のグラフィックチュートリアル

この記事では、MySQL 5.7.21のインストールに関する注意事項をまとめ、皆さんと共有します。 ...

Dockerfile の一般的なコマンドの概要

構文の構成: 1 注釈情報2 コマンド --- パラメータ [通常は大文字 | 実際には大文字と小文...

Vueのライフサイクルについて詳しく説明します

目次序文1. Vue2 のライフサイクルインスタンスのライフサイクルその他のライフサイクルフック2....

HTML と埋め込み Flash の両方におけるスクロールバーの分析と処理

開発を行う際に、次のような状況に遭遇することがよくあります。 a.swf が Web ページに追加さ...

Dockerバッチコンテナオーケストレーションの実装

導入Dockerfile ビルドの実行は、単一のコンテナの手動操作です。マイクロサービス アーキテク...

Docker 環境で JMeter+Grafana+influxdb ビジュアル パフォーマンス監視プラットフォームを構築するチュートリアル

目次1. Dockerをインストールする2. influxDBをインストールして設定する3. Gra...