docker が起動したコンテナにポート マッピングを追加します

Docker にはポート マッピングを追加するコンテナが実行されています

実行中のコンテナ用のポート マッピングを追加する

1. コンテナがポートをマップしているかどうかを確認します

docker port [容器id 或 容器名]

ポートマッピングがあります:

ここに画像の説明を挿入します

ポートマッピングなし:

ここに画像の説明を挿入します

2. コンテナの完全な ID を表示します。

docker inspect [容器id] | grep Id
// 得到以下结果
//    "Id": "fcae55f5180a79487662de426863565c7df05ed9b87854093b62776734928d25",

3. 表示する docker コンテナ ディレクトリを入力します

cd  /var/lib/docker/containers/var/lib/docker/containers

ここに画像の説明を挿入します

4. 取得した完全なコンテナ ID に基づいてディレクトリを入力します。

cd fcae55f5180a79487662de426863565c7df05ed9b87854093b62776734928d25

ディレクトリにはhostconfig.jsonと の2 つのファイルconfig.v2.jsonがあります。ファイルの内容を直接表示すると混乱します。ローカル マシンにダウンロードし、json ツールを使用して表示できます。

5. 設定ファイルを変更する

ホスト構成.json

// 当前容器 3306 端口绑定到本机 3306 端口
"PortBindings": {
    
    
    "3306/tcp": [
        {
    
    
            "HostIp": "",
            "HostPort": "3306"
        }
    ]
},

config.v2.json

// 这个文件需要查看两个位置
	// 暴露 3306、33060 端口
"ExposedPorts": {
    
    
    "3306/tcp": {
    
    
    },
    "33060/tcp": {
    
    
    }
},

// 和 
	// 这一段应该是表示哪些ip可以访问之类的
	// 如下也是我从一个 docker run -d -p80:80 ... 带有端口映射的容器的 config.v2.json 文件中复制出来修改后的
"Ports": {
    
    
    "3306/tcp": [
        {
    
    
            "HostIp": "0.0.0.0",
            "HostPort": "3306"
        },
        {
    
    
            "HostIp": "::",
            "HostPort": "3306"
        }
    ],
    "33060/tcp": null
},

6. 設定ファイルを置き換える

  1. コンテナを停止する

    docker stop [容器Id 或 容器名]
    
  2. 変更した構成ファイルを指定したディレクトリにコピーします/var/lib/docker/containers/完整容器Id(間違いを恐れる場合は、最初に元のファイルをバックアップしても構いません)。

  3. ドッカーを再起動します

    systemctl restart docker
    
  4. hostconfig.json再起動後、まずと設定ファイルが変更されているかどうかを確認しconfig.v2.json、変更されていない場合は、さらに数回アップロードしてみてください (これが私の場合に起こりました)。

  5. 最後に、ポート番号がマッピングされているかどうかを確認します

    docker port [容器id 或 容器名称]
    

おすすめ

転載: blog.csdn.net/weixin_58959834/article/details/131113312