由于容器是一次性的,当容器被停止、销毁或替换时,应用在容器中存储的数据同样会被销毁。
如果应用需要存储数据,需存储在共享数据存储中。
容器化的七个原则之不要发布两份应用
每个容器中只能部署运行一个应用,不能部署多个应用到一个容器中。
容器化的七个原则之清除不必要的包和文件
容器的一个显著特点是秒级启动,一旦制作了一个超大的镜像将难以分发。在镜像中应该确保仅有运行应用/进程的必需的文件和库存在,其他不必要的包、文件等建议应用打包前进行清除。
容器化的七个原则之不要在容器中运行多个进程
容器能完美地运行单个进程(http守护进程,应用服务器,数据库),但是如果你不止有一个进程,管理、获取日志、独立更新都会遇到麻烦。
容器化的七个原则之不要依赖IP地址
每个容器都有自己的内部IP地址,如果你启动并停止它地址可能会变化。
如果应用或微服务需要与其他容器通讯,由于容器IP是不固定的,应用依赖IP地址将无法与其他容器通讯,可以选择更合适的方式与其他容器进行通讯。
容器化的七个原则之不要在镜像中存储凭据、使用环境变量
不要在应用中写死服务的IP和端口(如数据库IP和端口、服务接口IP和端口),采用域名的方式。
环境变量应该以传参的形式传入容器,而不是直接写死在容器中,需要的环境变量可写入系统集成文档中。
容器化的七个原则之使用非root用户运行
docker容器默认以root运行。
随着docker的成熟,越来越多的安全默认选项变得可用。请求root是危险的,可能无法在所有环境中可用。所以镜像应该使用USER命令来指令容器以一个非root用户来运行。