之前试着玩玩docker有一阵子了,今天算是头一回正式在docker里部署网络服务。
本来想和lxc差不多的东西那自然是手到擒来,没想到还是改了很多。
第一个遇到的问题是,远程连到docker宿主机干活的时候突然断网了。一下傻掉了,以前都是连内网,从来不断的。这次连了一个反向隧道,居然断了,傻眼了。
再连回去,发现docker ps里还有进程,好办,docker attach这个进程,就又进去了。
如果没有找到进程,就只要docker commit存一下,然后再docker run拉起来继续
如果连id号也忘了,那还可以docker ps -a看一下最近用过的容器。
第二个遇到的问题是,部署了tornado以后起服务发现cannot bind address,想了一下,猜估计是容器里命令太少没法自动决定ip地址,手工指定了一个,可是问题又来了,怎么把内部的端口和外部的端口打通呢?
有几种办法,
第一种是讲docker的网络非容器花,--net=host将网络置为和主机一样的环境
第二种就是docker run -p outerip:outerport:innerport将外部的ip,端口映射到内部的端口,当然也可以用-v将外部的目录映射到内部的目录