【问题标题】:How to start docker without affecting host machine如何在不影响主机的情况下启动 docker
【发布时间】:2018-06-18 13:50:35
【问题描述】:

我正在尝试从这里运行 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% 的分离。

【问题讨论】:

  • 当你得到错误时你能发布你正在运行的命令吗?

标签: docker docker-compose virtual-machine


【解决方案1】:

这个问题有几种解决方案

  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 找出这些端口是什么。

【讨论】:

  • 我认为解决方案 #3 最接近我想要使用的,但我想它需要从 laradock 编辑 docker-compose.yml 文件(也就是编辑应用程序源),我想避免那。是否有可能做类似:--publish 127.0.100.102:*:*,所以它会将配置中使用的所有端口映射到那个 ip?
【解决方案2】:

我找到的一个解决方案是使用 docker-machine vm。

# Create machine
docker-machine create --driver=virtualbox --virtualbox-hostonly-cidr "10.10.10.1/24" docker-default

# Export docker .env variables
eval $(docker-machine env docker-default)

我发现的一个问题是我需要使用 NFS 与 docker 机器共享项目文件夹。 为此,我使用了以下脚本:https://github.com/adlogix/docker-machine-nfs 我不得不修改文件,因为在 linux 上 IP 后面不能有空格(第 372 行):

exports="${exports}$shared_folder $machine_ip$prop_nfs_config\n"

那我可以跑了

docker-machine-nfs docker-default -f --nfs-config="(rw,no_subtree_check,crossmnt,all_squash,anonuid=1000,anongid=1000)" \
    --shared-folder=/mnt/projects \
    --shared-folder=/home/hubertnnn/projects

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-04-18
    • 2020-04-23
    • 2013-11-03
    • 1970-01-01
    • 2018-08-19
    • 1970-01-01
    • 1970-01-01
    • 2012-12-21
    相关资源
    最近更新 更多