如何在生产中成功运用Docker

SalesforceIQ工程总监John Fiedler分享了如何成功地在生产环境中使用Docker的经验。建议逐步迁移服务到容器中,重点关注隔离性、安全性及可扩展性等关键特性。超过70%的基础服务已容器化,Web服务器和API服务器因较高的变化率和较少的依赖关系成为首选。

如何在生产中成功运用Docker阅读

SalesforceIQ(原名RelateIQ)的工程总监John Fiedler结合自己过去两年的开发经验,在DockerCon欧洲大会上发表了关于“如何成功地在生产中运用Docker”的演讲。Fiedler建议不要一开始就全面使用Docker相关的所有工具,而应该循序渐进地将服务转移到相应容器中。

Fiedler解释说,目前他们全部的网络基础服务都是在Docker中运行的,并且从来没有出现过停机的情况。同时,他坦言道,他们从两年前开始向Docker容器迁移,做过很多尝试,也失败过很多次。

最后,我们开始运用Mesos,但当时它还没有认证……我们还尝试在Docker中运行Kafka,如果Kafka失败了,那么我们的全部服务都将停机……其实在Docker中运行Docker并不是一个好的决定。

SalesforceIQ超过70%的基础服务是在Docker中运行的。在决定哪些服务应该放在容器中,哪些不应该时,Fiedler认为应该注意以下两个要点:变化率和依赖关系。相对而言,Web服务器或API服务器的寿命都是短暂的(转化率)、无国界的(依赖关系),数据库或CI/CD服务器则寿命较长,并且是有国界的。因此,Web服务器和API服务器都适合迁移到容器中。

现在,在某种程度上,SalesforceIQ的PaaS服务中除永久存储外,几乎所有的服务都是运行在容器中的。

演讲刚开始,Fiedler就根据自己的理解分析了“生产”与“成功”的内涵:

“生产环境与开发/测试环境并不相同。生产环境中的一些特性在测试环境与开发环境中并不重要。隔离性、安全性、高效性、可监测性和可记录性是在迁移生产环境时考虑的重要因素;同时,可扩展、有模板借鉴和自动化水平也是需要考虑的重要方面……我认为,任何事情超过99.9%就是成功的。”

总结这次演讲,Fiedler建议“保持简洁,从小做起,不要急于跃进PaaS。”谈到对工具的部署,他认为“Chef,Ansible和SaltStack仍然是重要的工具,并且可用于连接Docker。”当Docker做好生产准备时,Fiedler强调 “要使用其他未就绪的解决方案(alpha和beta)。”最后,他补充道,“使用Docker,最大的回报就是CI/CD。”

查看英文原文:How to be Successful Running Docker in Production

### 检查 Docker 中 Kafka 安装状态的方法 为了确认 Docker 中 Kafka 的安装状态,可以通过以下方法逐一验证: #### 方法一:查看已下载的镜像列表 通过执行 `docker images` 命令可以列出本地存储的所有 Docker 镜像。如果 Kafka 镜像已经成功拉取,则会在结果中显示其名称和标签[^4]。 ```bash docker images ``` 预期输出应包含如下内容: ``` REPOSITORY TAG IMAGE ID CREATED SIZE wurstmeister/kafka 2.12-2.5.0 xxxxxxxxxxxx xx days ago xx MB ``` #### 方法二:检查正在运行的容器 使用命令 `docker ps` 可以查看当前处于运行状态的容器。如果 Kafka 和 Zookeeper 容器已经在后台启动,则会在此处展示相关信息[^3]。 ```bash docker ps ``` 预期输出可能类似于以下内容(假设 Kafka 和 Zookeeper 正常运行): ``` CONTAINER ID IMAGE COMMAND STATUS PORTS NAMES abcd1234 wurstmeister/kafka:... "start-kafka.sh" Up 10 minutes 0.0.0.0:9092->9092/tcp kafka-0 efgh5678 zookeeper:latest "/bin/sh -c ..." Up 10 minutes 0.0.0.0:2181->2181/tcp, :::2181->2181/udp zookeeper ``` #### 方法三:尝试连接到 Kafka 容器内部 进入 Kafka 容器内部并通过简单的测试脚本验证服务是否正常工作。例如,发送一条消息至指定主题并读取消息。 ```bash docker exec -it kafka-0 bash ``` 随后,在容器内运行 Kafka 提供的相关工具来创建主题、生产消息以及消费消息[^1]。 ```bash # 创建一个名为 test-topic 的新主题 kafka-topics.sh --create --topic test-topic --bootstrap-server localhost:9092 --partitions 1 --replication-factor 1 # 发送一些测试数据到该主题 echo "This is a test message!" | kafka-console-producer.sh --broker-list localhost:9092 --topic test-topic # 订阅此主题以接收刚刚产的消息 kafka-console-consumer.sh --bootstrap-server localhost:9092 --from-beginning --topic test-topic ``` 以上操作完成后,应该能够看到之前生产的测试消息被正确打印出来。 --- #### 方法四:停止集群验证清理逻辑 编写或调用现有的停机脚本来终止所有关联的服务实例,并观察行为是否符合预期。这一步骤有助于进一步检验环境配置准确性。 ```bash ./stop_kafka_cluster.sh ``` 当上述脚本被执行后,“Kafka cluster containers stopped successfully.” 应作为最终反馈呈现给用户。 --- ### 总结 综合运用这些技术手段即可全面评估 Docker 下 Kafka 的部署状况及其功能可用性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值