a. docker内修改;在/etc/resolv.conf添加一下内容;这种方法只能修改单个docker容器
nameserver 8.8.8.8
nameserver 114.114.114.114
b. 宿主机内修改。这种方法之后创建的docker容器都会生效
vi /etc/docker/daemon.json
# 添加下面内容
"dns": ["8.8.8.8","114.114.114.114"]
# 重启docker
systemctl restart docker
检查宿主机是否开启转发功能
查看宿主机是否开启
cat /proc/sys/net/ipv4/ip_forward
如果返回的结果为0说明未开启
a. 直接修改上述文件
echo 1 > /proc/sys/net/ipv4/ip_forward
这种方式当主机重启的时候会改回原值
b. 修改/etc/sysctl.conf
vi /etc/sysctl.conf
添加下面一行代码</
更新了
docker
之后网络不可用, 直接删除
docker
创建的网桥
yqq@ubuntu:~$ ifconfig -a
br-b46c5de48ab5: flags=4098<BROADCAST,MULTICAST> mtu 1500
inet 192.168.0.1 netmask 255.255.0.0 broadcast 192.168.255.255
ether 02:42:12:9a:ef:d5 txqueuelen 0 (以太网)
上段时间遇到了
docker
容器
内部 dns
解析
失败的问题,发现在
docker
run启动
容器
之后,
容器
内部访问外部的接口总是提示
无法
解析
dns,然而
容器
外部是可以
解析
的,dns的配置也没有任何问题。
用
docker
exec -it contaner_name bash进去,ping 任何
域名
都是不通。
最终的
解决
办法在在于,停止
docker
daemon,删掉 ifconf...
docker
容器
内部
无法
解析
域名
1.检查主机是否开启转发功能2.检查防火墙设置3.设置
docker
的DNS服务器
1.检查主机是否开启转发功能
cat /proc/sys/net/ipv4/ip_forward
看输出结果,如果返回是0则未开启ip转发
开启方法:
vim /etc/sysctl.conf
net.ipv4.ip_forward = 1
使配置生效
sysctl -p
2.检查防火墙设置
查看防火墙的状态
firewall-cmd --state
如果是not running状态就不
docker
中有的时候需要从
容器
内向外网环境进行访问,这个时候我边出现了一个诡异的问题,从
容器
的宿主机直接通过curl命令使用
域名
可以正常的访问并返回正确的
解决
,但是从
容器
中向外调用外网环境的这个
域名
的时候,curl命令会被卡住,一直到超时都没有任何返回数据,但是一个很神奇的事情是,如果将该
域名
换成对应的IP的时候,从
容器
内向外调用外网环境的这个IP的时候,这个时候就可以正确的返回结果
使用 busybox
容器
,其
解析
器的库可能
无法
解析
nodelocaldns 或 coredns 返回的结果(可能是 ipv6 部分,或是库不全 glibc 等,不清楚具体原因),因此导致时好时坏(有时可以
解析
,有时候
解析
不成功)在宿主机上直接进行测试,通过下面可以看到(nslookup 指定了 dns
解析
地址),coredns 或 nodelocaldns 都可以进行
解析
。:在端口 8181 上提供的一个 HTTP 末端,当所有能够 表达自身就绪的插件都已就绪时,在此末端返回 200 OK。...
有时有些机器部署在内网,有关内网ubuntu如何通过fiddler代理执行apt命令、
下载
docker
镜像的问题可以参考笔者的其他文章:https://blog.csdn.net/john1337/category_10165743.html
本文就不再介绍其他内容,只介绍内网ubuntu如何通过自建的dns服务进行
域名
解析
的步骤
1、在代理机器上安装coredns服务,coredns使用很简单,执行可执行文件即可,笔者使用的代理机器是win10(一定要确保代理服务器能访问外网),
下载
如下可执行文件即可
解决
方案
抛弃
docker
for mac自带的linux虚拟机(尽管轻量,但其与OSX通信采用socket文件的方式),使用
docker
-machine
安装virtualbox。virtualbox创建后,会添加一个虚拟网卡,可以通过ifconfig命令查看。我们实现的方式,就是利用这个虚拟网卡。
使用
docker
-machine创建默认linux虚拟机,命令
docker
-machine create
切换
docker
环境,使用eval $(
docker
-machine env)命令
查看创建的虚拟机的ip地址:
docker
-machine ip default或者直接
docker
-mac