docker只有localhost可用(浅谈Docker如何自定义host文件)
docker只有localhost可用
浅谈Docker如何自定义host文件目录
- 一、命令
- 二、docker-compose.yml
- 三、dockerfile
- 四、直接修改
- 五、修改镜像
- 总结
1、问:我们的真正开发的时候数据库都是部署在内网的,而我们程序连接数据库的时候,需要指定内网的地址。但是有时候我们需要迁移环境,那么我们的后端代码就得跟着进行修改,有没有一种好的办法,不让我们修改代码吗?
答:可以肯定的说是有的,那就是在代码中指定的不是IP地址,而是域名。我们只需要配置域名和IP地址建立映射关系,所有的项目都无需更改代码就可以达到目的。
2、问:正式环境一般都是集群的形式,至少三台服务器,我们需要买三个域名吗?而且域名只能绑定公网IP,我们能把数据库公开到外网吗?为了安全,没人会把数据库公开到外网的。那该怎么办呢?
答:那就是修改host文件,在host自定义我们的域名和数据库集群的内网IP。在物理机linux上,直接修改/etc/host文件即可。
如果我们的服务以docker的形式部署在linux上。那么docker中的host怎么修改呢?
一般正式环境的镜像都是提前编译好的,如果不是采取docker-compose编译的镜像,很难修改host,所以我们只能在启动的时候通过参数配置。
docker run --add-host=www.scalerwang.com:192.168.1.100 --add-host=blog.scalerwang.com:192.168.1.200 --name wangscaler -it mydocker
使用命令参数指定--add-host
在yml中指定,编译的docker容器自动配置host文件,yaml相关内容如下
services: service-nginx: image: nginx extra_hosts: - "www.scalerwang.com:192.168.1.100" - "blog.scalerwang.com:192.168.1.200"
dockerfile没有直接的参数可以直接修改host文件,如果想通过dockerfile修改host文件,需要事先准备好host文件放在你的代码根目录下
MAINTAINER WangScaler@163.com ADD / /wangscaler RUN cat /wangscaler/hosts >> /etc/hosts
如此也是可以的。
如果你不嫌费劲的话,可以试试。当然如果你的程序以后台启动,你环境不对启动不起来的话,你也不能进去修改。
这个方法一是累人(集群数量越多越累),二是不适用(docker没这个正确的host跑不起来,还有可能你设置的域名正是别人的,那就向人家发起请求了)。
如果你的项目以docker的形式部署,往往都是先通过dockerfile、docker-compose编译成镜像。这时候你可以把镜像拉下来,修改完host再重新推上去覆盖原来的镜像。
最好用的方法就是前两种,省时省力,一次性搞定。如果你是dockerfile编译的镜像,就选第一种;如果你是docker-compose编译的就直接再docker-compose.yml修改好,一劳永逸。第三种也是可以接受的,但是后两种你就当不知道,不要尝试去做。
Docker的更多使用方法,比如创建容器时指定IP地址、以及上述所提到的dockerfile和docker-compose创建容器的方式等等,请参考往期文章Docker的搭建及基本命令。
到此这篇关于浅谈Docker如何自定义host文件的文章就介绍到这了,更多相关Docker自定义host文件内容请搜索开心学习网以前的文章或继续浏览下面的相关文章希望大家以后多多支持开心学习网!
- dockerfile自定义镜像图解(Docker images导出和导入操作)
- docker-compose怎么被执行的(Docker Compose一键ELK部署的方法实现)
- rabbitmq docker配置(Docker部署Rabbitmq容器实现过程解析)
- docker显示出错应用图标怎么处理(docker 命令报异常permission denied的解决方案)
- docker目录映射不起作用(关于dockerfile build过程中报/bin/sh: pip: command not found的解决方法)
- ubuntu下使用vscode(使用Vscode结合docker进行开发的详细过程)
- docker端口映射怎么添加(Docker 动态修改容器端口映射的方法)
- docker中国加速镜像怎么设置(Docker 安装及配置镜像加速的实现)
- docker-compose查看服务状态(Docker+DockerCompose封装web应用的方法步骤)
- docker安装java8(docker安装java环境的实现步骤)
- docker菜鸟教程(Docker简单入门使用教程)
- docker如何加volume(Dockerfile 中 VOLUME 与 docker -v 的区别说明)
- docker compose 与docker区别(windows安装Docker与docker-compose套装的详细教程)
- docker容器分配(Docker容器数据卷原理及使用方法解析)
- docker资源隔离的实现方式(docker配置openGauss数据库的方法详解)
- linuxnfs服务教程(使用Docker的NFS-Ganesha镜像搭建nfs服务器的详细过程)
- 8月再见 9月你好(8月再见)
- 魔兽世界 设计师爆料,原始版本并无PVP,跨阵营属于返璞归真(魔兽世界设计师爆料)
- 吐槽完《弧光大作战》之后,我们和设计师聊了聊魔兽首款手游的立项初衷和未来(吐槽完弧光大作战之后)
- 魔兽争霸3自定义战役少年杰雷 2(魔兽争霸3自定义战役少年杰雷)
- 今日菜价 芥兰涨幅最高 1.33 ,花菜降幅最高 3.10(今日菜价芥兰涨幅最高)
- 今日菜价 椰菜涨幅最高 3.25 ,水空心菜降幅最高 2.58(今日菜价椰菜涨幅最高)
热门推荐
- javascript取下拉框显示值(JavaScript offset实现鼠标坐标获取和窗口内模块拖动)
- 修改docker镜像的环境变量(解决docker加载新的镜像后repository和tag名称都为none的问题)
- SQL中AVG、COUNT、SUM、MAX等函数对NULL值处理
- nginx+ssl配置详解(nginx配置ssl实现https的方法示例)
- laravel关联查询限制数量(laravel-admin 后台表格筛选设置默认的查询日期方法)
- Request.Url的值有可能会带端口号
- BT宝塔Linux服务器管理助手架设VPS面板(安装及初始设置应用)(BT宝塔Linux服务器管理助手架设VPS面板安装及初始设置应用)
- python炫酷烟花源代码(python实现浪漫的烟花秀)
- vuecli项目入门(vue-cli4.5.x快速搭建项目)
- mysql如何使用临时表(MySQL中临时表的使用示例)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9