之前对docker的使用做了基本的模拟,现对遇到的问题做个记录。
systemctl 无法使用
环境:Docker version 1.11.2、Centos7.2.1511
报错:Failed to get D-Bus connection: Operation not permitted
网上说安装systemd-sysv 就能解决,but 在我这里没有解决这个问题。
当前只能另写脚本来管理服务的启动。两个镜像的合并问题
假如:
镜像A内有 tomcat(apr)、nginx
镜像B内有 mariadb
能不能得到一个镜像C内有:tomcat(apr)、nginx、mariadb呢?
当前答案:不可以。
如要得到镜像C,可以通过dockerfile将tomcat(apr)、nginx、mariadb安装的脚本,重新编译一个镜像C。
在单一环境中:重新编译dockerfile 和 在镜像A中再装mariadb是差不多,如已经知道该怎么安装,就只剩下执行的事情,和用dockerfile编译 也无多大差别。
这里就有一个疑问:dockerfile的优势是什么?
优势1:将所需如端口映射、挂载目录等设置好,等镜像创建后再启动容器时 不用带那么多的参数。
优势2:使用dockerfile快速在其他地方创建新镜像,不用导入和导出
优势3:想要添加新应用到镜像中时不用再运行容器,在容器中去操作,提交容器为新镜像,而是直接改脚本-再编译,从步骤上来讲简化旧镜像的处理
每次改动容器后,如果不保存成镜像,改动的内容就会丢失。而每次保存为新的镜像,那么镜像就会越来越多。
10个镜像完全可控,20个镜像大概能记得里面有什么,如果有100个镜像呢?-搞不好 就是个祸害呀。
重要的事情说三遍:要有镜像管理,要有镜像管理,要有镜像管理,针对实际情况-理管理规则
比如:镜像的命名、镜像的删除规则、镜像内容纪录docker 访问不到宿主机 同网段的服务器
起因:ipv4 被禁用啦
sysctl -w net.ipv4.ip_forward=1
/etc/sysctl.conf中加入 net.ipv4.ip_forward=1
sysctl -p