1、編輯容器的配置文件進行更改端口;
docker run 運行啟動時 -p 可以指定容器啟動映射端口 (0.0.0.0:18080 8080)
可以編輯配置文件 進行修改;(需要重啟docker 服務 不止是是容器 才能生效。只能重啟容器還是會覆蓋的)
2、查找需要更改端口的容器
docker ps
3、根據 CONTAINER ID 查找 docker 配置文件; (容器文件配置默認 /var/lib/docker/containers)
因為我更改了 docker 默認存儲位置。(docker info 可以查看docker信息)
4、更改 docker 默認環境變量 默認配置 是 /var/lib/docker
在 docker 啟動文件添加默認環境系統配置 " /etc/default/docker ":
添加 Environment File 配置:
# vi /usr/lib/systemd/system/docker.service
在 [Serivce] 下添加 EnvironmentFile=-/etc/default/docker #添加配置文件 在 [Install] 下添加 EnvironmentFile=-/etc/default/docker
5、停止容器
docker stop [ID/name]
6、停止 docker 服務
systemctl stop docker
7、編輯 更改 容器的 配置文件 hostconfig.json
config.v2.json 是容器啟動才會看到映射地址的、所以不必操作。
/data/docker/containers/0731470143a94579b837b295f4c03a5f283e2bc1b0be746e7da451b9eb817120/hostconfig.json
容器配置命名就是 以 CONTAINER ID 容器ID開頭的
8、查看編輯 hostconfig.json 文件;
jq . ./hostconfig.json
# jq 查看json 格式文件
# 更改 HostPort 就是映射的宿主機端口。
9、啟動 docker 服務 啟動容器
docker start [ID/NAME]
systemctl start docker
docker ps 查看看到更該了;
10、容器啟動、iptables 這個會自動加入的;直接 server iptables save 保存就好了。或者不放心可以直接添加端口 :
宿主機添加端口: iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 58080 -j ACCEPT
宿主機 nat 映射: iptables -A DOCKER ! -i docker0 -p tcp -m tcp --dport 58080 -j DNAT --to-destination 172.16.4.3:8080
注:
docker 在操作或者添加容器時候 先 service iptables save 然后再編輯添加重啟。
添加容器默認會添加映射到防火牆的,但是重啟iptables 就會失效、所以要先保存再重啟。