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. 設定ファイルを置き換える
-
コンテナを停止する
docker stop [容器Id 或 容器名]
-
変更した構成ファイルを指定したディレクトリにコピーします
/var/lib/docker/containers/完整容器Id
(間違いを恐れる場合は、最初に元のファイルをバックアップしても構いません)。 -
ドッカーを再起動します
systemctl restart docker
-
hostconfig.json
再起動後、まずと設定ファイルが変更されているかどうかを確認しconfig.v2.json
、変更されていない場合は、さらに数回アップロードしてみてください (これが私の場合に起こりました)。 -
最後に、ポート番号がマッピングされているかどうかを確認します
docker port [容器id 或 容器名称]