容器学习点点滴滴(三)
- 2019 年 10 月 7 日
- 笔记
一、容器是否能够使用mysql?
答案是肯定的。mysql、apache在docker中运行,正好可以发挥容器其弹性的特点,根据不同的业务流量启动相应能力的容器数量。
docker pull mysql 从公有dockerhub仓库中取下mysql容器
docker run –name=some-mysql -d -P -e MYSQL_ROOT_PASSWORD=mypassword mysql
–name参数是指定docker名称
-d代表后台运行
-P 大写代表将Dockfile中暴露出的3306内部端口随机指定一个外部端口
-e 是传入一个环境变量参数,这里的变量是密码
通过运行该命令,我们用docker ps -a发现,32771的外部随机端口关联到了mysql的3306暴露端口上。
0.0.0.0:32771->3306/tcp
二、容器是否能够任意使用宿主机中的目录或文件?
答案也是肯定的。容器的优势也在于此,没有像虚机一样复杂的操作系统中间层,容器可以任意挂载宿主机上的目录。
如下面的命令,我们将宿主机的/my/custom覆盖了docker中的/etc/mysq/conf.d目录
docker run –name some-mysql -v /my/custom:/etc/mysql/conf.d -d mysql
而且,官方也建议使用该挂数据卷的方式实现docker的数据文件持久化保存,避免docker被删除时,所有docker数据也跟着被删除。
三、容器的下载、启动这么复杂,有没有统一的管理工具?
就像OpenStack是管理虚机,而Kubernates开源工具则是管理容器。目前K8s基本成为了容器管理的标准组件,在一些公有云中,使用K8s本身不收费,仅为占用的虚机收费。
K8s的组成为Master、Node节点,Master、Node节点在公有云中一般为虚机,而在Node节点中包含Pod节点,Pod节点一般即为最终使用的容器。
通过K8s的配置,能够实现Pod节点的创建、启动、配置,以及根据不业务访问量进行Pod节点的自动弹性伸缩。