标签 "Docker" 下的文章

日常工作中,总会遇到有些 MySQL 实例我们自己访问不到的情况!

不过我们可以另辟蹊径,因为开发环境的容器可以连接到目标数据库!

而由于安全问题公司禁止使用 ssh 跳板,

这个时候只能在容器内部安装 mysql-client MySQL 客户端,这样也可以达到访问数据的目的。

命令如下:

rpm -ivh https://repo.mysql.com/mysql57-community-release-el7-11.noarch.rpm && \
rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2022 && \
yum install mysql-community-client.x86_64 -y

特此记录下来,下次遇到就直接粘贴上去!

对了,这个是 CentOS 7 适用,其他系统应该是不能用的。

公司电脑存储是 128G 的,之前为了腾出空间,删除了整个 Docker 环境,它占据了我整整 60G 的磁盘空间。

后面还花了时间,把自己的开发环境,逐步迁移到公司提供的测试环境上,很多组件不需要自己搞了,很舒服。

不过,测试环境的资源经常挂掉(可能用的人多,也可能是使用的姿势不对),又得自己动手了……

简单记录一下安装的过程:

brew install java kafka

经历了漫长的等待,你会看到安装成功的提示。使用下面命令启动 Zookeeper 和 Kafka:

zookeeper-server-start /opt/homebrew/etc/kafka/zookeeper.properties
kafka-server-start /opt/homebrew/etc/kafka/server.properties

Enjoy!

容器化,是指使用容器技术(Docker/containerd等)运行应用程序(容器),并使用容器编排技术(例如 K8s)来管理这些容器。

我在之前的文章 《使用 Dockerfile 构建生产环境镜像》 提及普通的虚拟机部署存在的问题:

为什么有这篇文章,是因为我在真正做容器化改造的时候,发现公司生产环境存在大量的坑:

  • 传统虚拟机部署,基本依赖克隆或者手工编译。由于人力原因,SRE 历来单传,编译出来的 PHP、扩展等二进制版本不一致;
  • 项目开发人员痛苦不堪——他没办法模拟出接近于线上一致的环境(碰不到摸不着,各种扩展版本都要自己去编译);
  • 新人入职都会灵魂拷问你一句——我怎么把线上的代码跑起来?
  • ……

另外,传统的虚拟机部署,还存在成本浪费——虚拟机无法做到容器的资源隔离和扩缩容,资源利用率不高。

所以我们可以发现,有以下几点好处:

一、环境的高度一致性

  • 容器需要制作镜像文件,描述环境的构建过程,也就意味着它可以保证环境的高度一致
  • 无论本地环境或者生产环境,由于 Dockerfile 的存在,不同的操作系统也可以兼容
  • 高度一致性带来了环境的统一,统一的环境有利于 CI/CD 流程,结合自动化技术提升效率

二、资源隔离

  • 以往虚拟机容易因为混合部署,而某些应用耗费内存过大,导致程序 OOM 崩溃,而容器由于资源隔离,不会互相影响
  • 合理分配每个容器的资源,有利于提高资源利用率,降低资源成本
  • 通过 Linux Cgroups 技术(Linux Control Group)限制资源上限;通过 Linux NameSpace 机制修改进程看到的外部资源的 “视图”

三、轻量级

  • 相比虚拟机,容器启动速度在秒级别
  • 容器为进程,通过 Linux NameSpace 机制和 unionFS,使得进程本身看起来好像拥有一个隔离的环境和文件系统(实际上还是宿主机的一个进程)

容器化是未来的一大趋势!让我们拥抱云原生吧!