docker安装了iptalbes以后,出现的悲剧与解决方案
docker安装了iptalbes以后,出现的悲剧与解决方案
iptalbe是在docker之后安装的,系统是fedora20,安装完iptable以后,gitlab服务器不能访问了,端口都无法指向了。
情况是这样的:
[root@localhost ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
5e6daed2ae2c sameersbn/gitlab:8.6.4 "/sbin/entrypoint.sh " 4 days ago Up 4 days 443/tcp, 0.0.0.0:10023->22/tcp, 0.0.0.0:10081->80/tcp wwwgitlab
782e02f14fb3 sameersbn/gitlab:8.6.4 "/sbin/entrypoint.sh " 4 days ago Exited (128) 3 minutes ago gitlab
7a3f275fa634 sameersbn/redis:latest "/sbin/entrypoint.sh" 4 days ago Up 4 days 6379/tcp gitlab-redis
6960c6b73115 sameersbn/postgresql:9.4-18 "/sbin/entrypoint.sh" 4 days ago Up 4 days 5432/tcp gitlab-postgresql
2a6c5aea692f 67ea261296f44beeadd200de86260adb4732fc386ed7833e15aa964bc0053b6f "/bin/sh -c 'pip inst" 4 weeks ago Exited (2) 4 weeks ago insane_fermi
[root@localhost ~]# docker start 782
Error response from daemon: Cannot start container 782: iptables failed: iptables -t nat -A DOCKER -p tcp -d 0/0 --dport 10080 -j DNAT --to-destination 172.17.0.26:80 ! -i docker0: iptables: No chain/target/match by that name.
(exit status 1)
Error: failed to start containers: [782]
[root@localhost ~]# docker rm 782
从昨天晚上到今天中午,各种折腾,因为有原来的很多数据,怕丢,所以一直在尝试启动。
网上有说最简单的方式是把docker彻底卸载,重新安装,我是懒人,所以就这么干了:
卸载docker:
(1)yum list installed | grep docker
(2)sudo yum -y remove docker-engine.x86_64
(3)rm -rf /var/lib/docker
重新安装:
参考官方文档:安装docker
curl -fsSL https://get.docker.com/ | sh
如果已经下载过,重装docker的话:
yum -y -q install docker-engine
其实直接用官方推荐的方式就行了,因为默认会先执行:yum -y -q install docker-engine
安装完后,重新安装gitlab系统软件。
安装完后发现还是一样,启动不了gitlab,而且把容器重新安装后,postgresql和redis都无法安装启动了,后面发现是原来的挂载数据问题:
我把原来挂截的数据都移动到别处:
mv -rf /srv/docker/gitlabe/gitlabe ~/gitlabe
然后重新安装gitlab相关软件,redies、postegsql、gitlab启动成功
访问 http://localhost:10080
久违的gitlab页面出现了。
再把备份的git repostories库文件复制到:/srv/docker/gitlab/gitlab
注意,不要全部复制过去,因为很多deviceMapper不匹配,全部复制可能会导致服务器再次启动不了,其实只要把repostories文件夹下全部文件复制过去就行了,uploads文件夹也复制过去,再次启动,redis文件不要复制过来,他会重新建立
服务器启动了以后,更新/提交下代码看看,悲剧了,更新报如下错:
samhu@MacBook-Pro ~/P/i/l/lebond_ios> git pull 128 master!?
remote: Counting objects: 2239, done.
remote: Compressing objects: 100% (1567/1567), done.
error: inflate: data stream error (invalid stored block lengths)
fatal: pack has bad object at offset 25664670: inflate returned -3
fatal: index-pack failed
google了一下,发现解决方案很复杂,需要修改服务器多处地方,反正就是本地保存的提交对象与服务器实质的提交对象的sham值不一致,解决很麻烦,还不如删除原来的库,让客户端重新提交下。
好了,删除原来的库,重新建立git库,再checkout,再pull,再push,ok,大功告成。。。。。。