容器学习点点滴滴(三)

  • 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节点的自动弹性伸缩。