一、环境

(1)虚拟机使用VMware Workstation 14 player

(2)wubantu系统16.4版本

二、问题

当我第一次拉取shipyard相关镜像,然后构建容器后,打开shipyard显示了本地安装的镜像,然后下一次打开,就显示不出来了。后来认为wubantu的ip因为网络变化改了,与构建shipyard时的ip不一致,导致其打开后无法显示。

三、设置wubantu静态ip

修改wubantu的ip,为其设置为静态ip,这样更换网络后,wubantu的ip也不会变化了,在这个也发现了许多的坑,查阅了许多才解决。

1、在root权限下输入下面命令:

vi /etc/network/interfaces

 2、输入如下内容:

3、上面内容不同机器是不一样的,不然xshell会连接不上,或者ping不成功等问题。

(1)ens33需要在虚拟机上输入ifconfig查看的,有的可能是ens0等等。

(2)gateway的地址不能随便输入,需要查询宿主机,在命令行输入ipconfig,看这个Vmnet8的地址

(3)address的地址是静态ip地址,与gateway前三位一致,最后一位随便设置,与ipconfig中显示的以太网适配器不一致就可以了。

(4)dns-nameservers这一项必须有,地址可以选择合适的公共DNS

4、做如下虚拟机设置

5、重启服务

(1)要是wubantu桌面版还需要重启虚拟机

sudo /etc/init.d/networking restart

6、这样静态ip就设置好了。

四、操作shipyard

1、在没有修改wubantu为静态ip之前,我是这样安装shipyard和构建的

(1)拉取Shipyard相关镜像,下面代码在虚拟机里一行一行执行。

docker pull shipyard/shipyard

docker pull swarm

docker pull shipyard/docker-proxy

docker pull alpine

docker pull microbox/etcd

docker pull rethinkdb

(2)构建Shipyard容器,第四个命令和第五个命令中的192.168.137.100是在虚拟机中查询ifconfig后ens33的地址,也就是wubantu系统的ip地址。一条一条执行。

docker run -ti -d --restart=always --name shipyard-rethinkdb rethinkdb


docker run -ti -d -p 4001:4001 -p 7001:7001 --restart=always --name shipyard-discovery microbox/etcd:latest -name discovery

docker run -ti -d -p 2375:2375 --hostname=$HOSTNAME --restart=always  --name  shipyard-proxy  -v /var/run/docker.sock:/var/run/docker.sock  -e  PORT=2375 shipyard/docker-proxy:latest

docker run -ti -d --restart=always --name shipyard-swarm-manager swarm:latest  manage  --host  tcp://0.0.0.0:3375  etcd://192.168.137.100:4001

docker run -ti -d --restart=always --name shipyard-swarm-agent swarm:latest join --addr 192.168.137.100:2375 etcd://192.168.137.100:4001

docker run -ti -d --restart=always --name shipyard-controller --link shipyard-rethinkdb:rethinkdb --link shipyard-swarm-manager:swarm -p 8080:8080 shipyard/shipyard:latest server -d tcp://swarm:3375

2、由于之前wubantu的ip更换网络后变了,而构建shipyard容器时的ip还是以前的ip,所以无法显示本地镜像和容器。现在修改成了静态ip,怎么更改为静态ip,我想了好久,最后提供了两种方法。

(1)一种是将shipyard容器删除,重新执行上一步的第(2)个,重新构建shipyard。

(2)另一种找到shipyard容器的配置文件更改ip。

3、在虚拟机中执行删除shipyard镜像命令,一条一条执行。没有成功,说明没有装,因为是自定义安装的,不用管,接着执行下一条。这一步完成后,重新执行上一步的第(2)个,重新构建shipyard就行了。

docker rm -f shipyard-controller
docker rm -f shipyard-rethinkdb
docker rm -f  shipyard-swarm-agent
docker rm -f shipyard-swarm-manager
docker rm -f shipyard-proxy
docker rm -f shipyard-certs
docker rm -f shipyard-discovery
docker rm -f shipyard-rethinkdb

五、更改shipyard容器的ip或者端口

1、输入下面命令查看容器信息。

docker ps -a

(1)获取我们要修改的容器id简称

2、查看容器id的全称

(1)555df3935c98为上面查询到的我们想要修改的id

docker inspect 555df3935c98 |grep Id

3、进入该容器配置文件所在文件夹

cd /var/lib/docker/containers/555df3935c98240bbd51756c3fc6faf84b2df185b42635f8fa3e44371e708914

4、查看所有文件

5、找到config.v2.json文件打开,把ip修改为wubantu目前设置的静态的ip,主要找addr和etcd后面会有,改了就行了。

6、把其他需要修改的容器重新执行以上步骤就好了。

六、结果展示

重新打开shipyard后,界面上就有了本地的容器,如图

七、总结

以上是我对问题的解决,实现了wubantu静态ip设置,容器ip修改,最终实现了宿主机ip变化后,shipyard仍然能够显示容器和镜像,更多精彩欢迎关注:

 

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐