如何使用可访问的 docker-compose 设置特定的 IP 地址
Posted
技术标签:
【中文标题】如何使用可访问的 docker-compose 设置特定的 IP 地址【英文标题】:How to set a specfic ip address with docker-compose who's accessible 【发布时间】:2017-02-21 21:53:36 【问题描述】:目前我在玩 Docker,我喜欢它,但是如何使用 docker-compose 设置 IP 地址?
这是我的问题,在 docker-compose 网站上是 Wordpress 的快速入门示例。
version: '2'
services:
db:
image: mysql:5.7
volumes:
- "./.data/db:/var/lib/mysql"
restart: always
environment:
MYSQL_ROOT_PASSWORD: wordpress
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress
MYSQL_PASSWORD: wordpress
wordpress:
depends_on:
- db
image: wordpress:latest
links:
- db
ports:
- "8000:80"
restart: always
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_PASSWORD: wordpress
现在我希望 Wordress-Site 在 IP 地址 10.10.10.25 下可用,我该怎么做?
使用 Docker-compose 可以吗?
编辑
所以我尝试建立我的网络,但它不起作用。
version: '2'
services:
db:
image: mysql:5.7
volumes:
- "./.data/db:/var/lib/mysql"
restart: always
environment:
MYSQL_ROOT_PASSWORD: wordpress
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress
MYSQL_PASSWORD: wordpress
networks:
mynet:
ipv4_address: 172.25.0.102
wordpress:
depends_on:
- db
image: wordpress:latest
links:
- db
ports:
- "8000:80"
restart: always
environment:
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_PASSWORD: wordpress
networks:
mynet:
ipv4_address: 172.25.0.101
networks:
mynet:
driver: bridge
ipam:
config:
subnet: 172.25.0.0/24
它只收到以下错误消息。
wordpress_1 |警告:mysqli::mysqli(): (HY000/2002): Connection 拒绝在 - 在第 19 行 wordpress_1 | wordpress_1 | MySQL 连接错误:(2002)连接被拒绝 wordpress_1 | AH00558: apache2:无法可靠地确定服务器的完全合格 域名,使用 172.25.0.101。设置“服务器名称”指令 全局禁止此消息 wordpress_1 | AH00558:阿帕奇2: 无法可靠地确定服务器的完全限定域名, 使用 172.25.0.101。将“ServerName”指令全局设置为 压制
【问题讨论】:
您希望您的 WP 容器在您的 docker 网络中拥有该特定地址? 从您的更新看来,您已成功在 docker-compose.yml 中指定了所需的 IP 地址,现在又出现了不同的错误。 【参考方案1】:docker 模型不是创建具有特定 IP 的容器,而是仅公开和发布您需要从外部访问的容器中的端口。因此,您将在 docker-compose.yml 中为服务包含以下内容:
ports:
- 8080:80
这会将到达主机 8080 的所有流量引导到容器的端口 80。您可以根据需要调整这些端口,甚至使它们相同。然后所有试图到达您的 wordpress 服务器的外部流量都转到 http://your.docker.host:8080
(对于本地测试,应该是 http://localhost:8080)。
如果你真的需要指定一个容器的IP地址是可以的,但是你需要先定义你自己的网络,然后在那个网络上运行容器(给它一个IP),然后你需要更新您的路由器或网络上的其他主机上的路由将流量发送到该 IP 的 docker 主机,您可能会发现您的默认 iptables 规则不允许流量到该容器。因此,我不建议走这条路。
【讨论】:
以上是关于如何使用可访问的 docker-compose 设置特定的 IP 地址的主要内容,如果未能解决你的问题,请参考以下文章
如何在 docker-compose 中访问 Postgres 数据库
如何将 Nginx 反向代理到本地托管(在具有 ssh 访问权限的服务器上)docker-compose