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