发布网友 发布时间:2022-04-22 21:52
共2个回答
热心网友 时间:2022-04-11 03:05
docker搭建了lnmp环境后,如果需要访问安装在宿主机上的数据库或中间件,是不能直接使用127.0.0.1这个ip的,这个ip在容器中指向容器自己,那么应该怎么去访问宿主机呢:
例如你的docker环境的虚拟IP是192.168.99.100,那么宿主机同样会托管一个和192.168.99.100同网段的虚拟IP,并且会是主IP:192.168.99.1,那么就简单了,在容器中访问192.168.99.1这个地址就等于访问宿主机,问题解决
注意,通过192.168.99.1访问宿主机,等于换了一个ip,如果数据库或中间件*了本机访问或者做了ip段*,要记得添加192.168.99.1到白名单
本回答由网友推荐
热心网友 时间:2022-04-11 04:23
docker的意义就在于“隔离运行环境”,这样才便于快速开发、部署。使用docker可以“原封不动”地从Dev到Ops,这也是docker的魅力所在。所以你的数据库docker应当是在自己内部建立数据库,这样可以方便地把它迁移动任何地方。
当然这并不影响你在其他容器中建立数据库,或在宿主机建立,并和容器通讯,但是在没有充足理由的情况下,不推荐这么做,否则你就要问问自己,我使用docker的目的是什么。追问一个容器内部配置上运行所需要的所有东西吗?比如mysql redis mq 等等。。。那样生成的镜像会不会很庞大,如果不是镜像太大,这样很舒服,配好一次,哪哪都能运行,我刚学习不久,对这些还不是很懂
追答你的理解有问题,每个容器都应该是一个“最小运行单位”,这样你就可以在主机上运行成千上万个容器而互不影响,一个现在项目当然会包括很多层,比如你的数据库、服务层、UI层等等,每个具体的功能可以(也应该)在一个容器里运行,它们之间通过某种方式去通讯,比如流行的API Gateway等等,这样你的体系就是松耦合的,很容易开发、变更、部署。
建议你好好学习一下CI/CD方面的知识,会对docker为什么产生,怎样应用才是它的目的有进一步的理解。