我有一个 bash 脚本runmydocker.sh
,它应该抓取开发人员发送的 DNS 字符串,在运行他runmydocker.sh
并在动态内部创建一个新的 DNS/etc/hosts
并指向 docker 服务器时。
这是流程:
- 获取用户发送的 DNS 并将其存储到 MYDNS 变量中
- 复制当前主机的内容
- 插入 127.0.0.1 $MYDNS
- 调用 docker run ....
所以用户应该这样做:
./runmydocker.sh mysite.com
当它编写 URL mysite.com 时,它应该使用 docker 服务器。
所以我的问题是如何将这个新的 DNS 插入/etc/hosts
?
假设您的脚本以 root 身份运行,您可以执行以下操作:
$1
是脚本的第一个参数(mysite.com
对于问题中的示例)。此命令查找文件中包含的行127.0.0.1
并将hosts
新域附加到它。您不应该添加多行
127.0.0.1
,这可能会导致问题。更好的方法是 Ubuntu 安装程序所做的 - 在环回范围(
127.0.1.1
例如)中添加一个新地址。这会比较棘手,因为您需要找出最后添加的环回地址并增加它。如果我发现一些足够简单的东西,我会为此添加一个方法。