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