如何启动docker而不影响主机

时间:2018-06-18 13:50:36

标签: docker docker-compose virtual-machine

我正在尝试从此处运行泊坞窗图片: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%的分离。

2 个答案:

答案 0 :(得分: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来查找这些端口。

答案 1 :(得分:0)

我发现的一个解决方案是使用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