docker - 如何在不影响主机的情况下启动 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% 的分离。
解决方案
这个问题有几种解决方案
- 不要发布端口。如果您不发布端口,则不会有任何冲突。
- 将端口发布到其他地方。你可能有类似的东西
--publish 443:443
。这是一个冲突,因为您的主机已经在使用 443 了。您可以将其更改为--publish 20443:443
. - 将端口发布到特定接口(如果可能)。如果您的主机在 192.168.100.101 上使用端口 443 而不是在 127.0.100.102 上,那么您可以
--publish 127.0.100.102:443:443
毫无冲突地进行操作。 - 使用
publish-all
. 而不是--publish 443:443
使用--publish-all
. Docker 会在你的系统上选择未使用的端口——保证没有冲突。您可以使用其中一个docker ps
或docker inspect
找出这些端口是什么。
推荐阅读
- r - 无法在 R 中创建包
- notifications - 收到电子邮件:请在 2018 年 5 月 21 日之前为您在 Microsoft 注册的每个应用提供服务条款和隐私声明
- javascript - 在 html img src 代码中调用 JavaScript 函数(随机 img 生成器)
- html - 如何使我的椭圆形条带在css中有波浪?
- ios - 如何使用 segue 快速创建表格?
- canvas - Internet Explorer 画布呈现不同的 CJK 通用字体
- python - pyAudio what is the in_data in callbacks?
- javascript - SVG Path drawing
- postgresql - 带约束的 Ecto.Migration - 子/父
- python - How to filter in python eve by object id string without schema