浅谈Docker如何自定义host文件

 更新时间:2021年08月19日 09:48:01   作者:WangScaler  
本文主要介绍了Docker如何自定义host文件,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

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

二、docker-compose.yml

在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

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文件内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Docker容器实现MySQL多源复制场景分析

    Docker容器实现MySQL多源复制场景分析

    这篇文章主要介绍了Docker容器实现MySQL多源复制,通过本文学习可以掌握多源复制的好处,通过使用场景分析给大家介绍的非常详细,需要的朋友可以参考下
    2022-06-06
  • docker部署xxl-job-admin出现数据库拒绝问题及解决方法

    docker部署xxl-job-admin出现数据库拒绝问题及解决方法

    这篇文章主要介绍了docker部署xxl-job-admin出现数据库拒绝问题,本文给大家分享正确的解决思路,对docker部署xxl-job-admin相关知识感兴趣的朋友一起看看吧
    2023-02-02
  • docker.service启动报错的一次排查详解

    docker.service启动报错的一次排查详解

    这篇文章主要介绍了docker.service启动报错的一次排查详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-11-11
  • docker打包vue和vite前端项目

    docker打包vue和vite前端项目

    本文主要介绍了docker打包vue和vite前端项目,通过Docker镜像可以快速构建开发环境,统一依赖和配置,提高开发效率,具有一定的参考价值,感兴趣的可以了解下
    2023-08-08
  • Docker 下MySQL数据库的备份和恢复的操作方法

    Docker 下MySQL数据库的备份和恢复的操作方法

    这篇文章主要介绍了Docker 下MySQL数据库的备份和恢复操作方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-02-02
  • docker compose部署mongodb 分片集群的操作方法

    docker compose部署mongodb 分片集群的操作方法

    分片机制(Sharding)是MongoDB中用于处理大规模数据集和高负载应用的一种数据分布策略,通过将数据均匀分布在多个服务器上,分片技术能够提高应用的可扩展性和性能,本文给大家介绍docker compose部署mongodb 分片集群的相关操作,感兴趣的朋友一起看看吧
    2024-10-10
  • docker容器/etc/hosts文件修改方法

    docker容器/etc/hosts文件修改方法

    在容器内部,当需要访问其他容器或主机时,可以通过/etc/hosts文件来解析主机名,从而实现网络通信,这篇文章主要介绍了docker容器/etc/hosts文件,需要的朋友可以参考下
    2023-06-06
  • 一文带你快速了解和使用Docker

    一文带你快速了解和使用Docker

    本文对 Docker 进行全面阐述,详细介绍 Docker 的作用、其基本使用,如常用命令、Dockerfile 的作用及使用、Docker Compose 的作用及使用,感兴趣的同学跟着小编一起来学习吧
    2023-05-05
  • docker常用命令汇总

    docker常用命令汇总

    这篇文章主要介绍了docker常用命令汇总,都是一些常用的基本命令,有需要的同学可以尝试学习下
    2020-12-12
  • Docker安装MySQL并使用Navicat连接的使用示例

    Docker安装MySQL并使用Navicat连接的使用示例

    在Docker里运行MySQL的方式还是很方便的,本文主要介绍了Docker安装MySQL并使用Navicat连接的使用示例,具有一定的参考价值,感兴趣的可以了解一下
    2023-10-10

最新评论