docker网络问题解决办法“大全”:关于宿主机访问不了docker容器中web服务,或者容器内访问不了外网的问题的解决办法
ubuntu kylin 15 安装docker后 ,启动包含web应用的容器,在宿主机上死活访问不了web服务。后来发现进入容器后,安装不了软件,访问不了外网。
因此网上查原因,有大神说让重建docker0网络,重建的过程中,发现brctl未安装,因此安装了bridge-utils,执行如下命令,一切正常。
nnd,困惑了好久!!!
重建docker0网络
pkill docker
iptables -t nat -F
ifconfig
docker0 down
brctl delbr docker0
docker -d
------------------------------------------------------------------------------------------------------
转折:过了一天启动docker,发现容器内又访问不了外网了,容器外也访问不了容器内的web服务。
按照上面的命令清理iptables,重建docker0也没有效果。查了stackoverflow又很多人也有同样的问题,解决办法如上,对我无效。
但是下面留言有如下方案,照做后问题解决,不知道以后是否会出现。
1,在docker run命令启动容器时,增加--net=host ,问题解决,但是无法进行端口映射,只能用容器暴漏的端口。
2,上面是临时解决办法,使用systemctl restart docker之后,问题解决,可以进行端口映射。
------------------------------------------------------------------------------------------------------
转折: docker version 查看,我的docker版本是1.6,而最新版本是1.9.1,我准备升级到最新版本。命令如下:
设置下载docker的源地址为: https://get.docker.io/ubuntu
# apt-get -y installapt-transport-https
# apt-keyadv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 36A1D7869245C8950F966E92D8576A8BA88D21E9
# bash -c "echo deb https://get.docker.io/ubuntu docker main >/etc/apt/sources.list.d/docker.list"
# apt-get update
# apt-get -y install lxc-docker
# docker -v //查看docker版本
# ps -ef | grep docker
root 17311 1 0 Feb13 ? 00:00:43 /usr/bin/docker -d
旧版本Docker升级
注:使用ubuntu源安装的Docker是不能升级到最新版本的,因为ubuntu源中是没用最新版本Docker的
注:升级中所有运行容器都会自动关闭,最好升级前备份容器。
# apt-getupdate
以下是两种升级方式:
# apt-get -u -y upgrade lxc-docker 安全升级
# apt-get -u -y dist-upgrade lxc-docker 安全升级失败可用这个强制解决依赖包升级
# docker -v //查看docker版本
升级完成后,启动docker, systemctl start docker, 报错:
Failed to start docker.service: Unit docker.service is masked.
百度后,使用如下命令解决
systemctl unmask docker.service systemctl unmask docker.socket systemctl start docker.service
重新启动docker,一切正常。启动容器,在宿主机浏览器中访问容器中的web服务,也能正常访问。
root@liu-Rev-1-0:/home/liu# docker run -d -P --name=webapp training/webapp python app.py
94b07bd9b88d4460eba794b081586756fe4329ba04995c2c9faa342951f803bd