文章目录
  1. 1. 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,大功告成。。。。。。

文章目录
  1. 1. docker安装了iptalbes以后,出现的悲剧与解决方案