首页 > 解决方案 > 如何在不影响主机的情况下启动 docker

问题描述

我正在尝试从这里运行 docker 映像:http: //laradock.io/

我遇到的一个问题是一系列错误:

Error starting userland proxy: listen tcp 0.0.0.0:443: listen: address already in use
Error starting userland proxy: listen tcp 0.0.0.0:6379: bind: address already in use
Error starting userland proxy: listen tcp 0.0.0.0:3306: bind: address already in use
...

在寻找解决方案时,我发现要解决这个问题,我需要在我的主机上杀死 nginx、mysql、redis 等,以允许 docker 接管端口。

但是我尝试使用 docker(或任何 VM)的主要原因是使应用程序不使用主机,而是使用像 192.168.1.5 这样的地址(假设这将是 docker 容器的 IP 地址)

我的问题是 docker 是否可以做到这一点,如果可以,那么我需要做的就是保持主机和 docker 之间 100% 的分离。

标签: dockerdocker-composevirtual-machine

解决方案


这个问题有几种解决方案

  1. 不要发布端口。如果您不发布端口,则不会有任何冲突。
  2. 将端口发布到其他地方。你可能有类似的东西--publish 443:443。这是一个冲突,因为您的主机已经在使用 443 了。您可以将其更改为--publish 20443:443.
  3. 将端口发布到特定接口(如果可能)。如果您的主机在 192.168.100.101 上使用端口 443 而不是在 127.0.100.102 上,那么您可以--publish 127.0.100.102:443:443毫无冲突地进行操作。
  4. 使用publish-all. 而不是--publish 443:443使用--publish-all. Docker 会在你的系统上选择未使用的端口——保证没有冲突。您可以使用其中一个docker psdocker inspect找出这些端口是什么。

推荐阅读