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)

推薦する

IE8互換表示(IE7モード)とスタンドアロンIE7の違いの詳細な説明

1つ。 IE8 互換表示の概要<br />新しいバージョンのブラウザが古い Web サイ...

Linux での一般的なシェル スクリプト コマンドと関連知識

目次1. 覚えておくべき知識1. 変数タイプ2. シェル変数の説明3. シングルクォート、ダブルクォ...

MySQL実践スキル: 2つのテーブルに異なるデータがあるかどうかを比較する方法の分析

この記事では、MySQL が 2 つのテーブルを比較して、異なるデータがあるかどうかを確認する方法を...

XHTML: フレーム構造タグ

フレーム構造タグ <frameset></frameset>フレームを使用す...

Bootstrap 3.0 の特殊効果の学習ノート(表示と非表示、フローティングの除去、閉じるボタンなど)

この記事の主な内容は次のとおりです。 1. 閉じるボタン2.キャレット3. フローティングを素早く設...

MySQLステートメントの記述と実行順序を理解するだけです

MySQL ステートメントの書き込み順序と実行順序には大きな違いがあります。書き順、mysql の一...

HTML で 2 つの div タグの間に垂直線を描く方法

最近、インターフェースを描画しているときに、インターフェースに垂直線を描画し、この垂直線の高さが親 ...

CSSマスクのフルスクリーン中央揃えを実装する方法

具体的なコードは次のとおりです。 <スタイル> #トーストローダーフルスクリーン{ 高さ...

HTML 選択オプション デフォルトの選択方法

オプションに属性 selected = "selected" を追加すると、それ...

Vue 画像切り抜きコンポーネントのサンプルコード

例:ヒント:このコンポーネントはvue-cropperの二次パッケージに基づいていますプラグインをイ...

Manjaro インストール CUDA 実装チュートリアル分析

昨年末、Thinkpad T450 のデュアルシステムの opensuse を Manjaro に置...

Docker 階層化パッケージを使用して Spring Boot を設定する方法

Spring Boot プロジェクトでは、Docker コンテナ、jar、war の階層化パッケージ...

MySQL 5.6 の「暗黙的な変換」によりインデックスが失敗し、データが不正確になる

背景SQL クエリを実行するときに、where 条件の vachar 型フィールドの単一引用符を削除...

haslaylout と bfc 解析の理解

1. haslayout と bfc は IE 固有の標準属性です。 2. BFC はページ上の分離...

CSS3 で @media を使用して Web ページの適応を実現するためのサンプル コード

現在、コンピュータモニターの画面解像度はますます高くなる傾向にありますが、携帯電話などのモバイルデバ...