---
# System prepended metadata

title: Kafka Producer & Consumer Docker建立(CHT)

---

# Kafka Producer & Consumer Docker建立(CHT)
## 1. 安裝 Docker 

Ubuntu 套件管理 apt 更新
``` bash=
sudo apt-get update                  #更新 Apt 
```
![](https://i.imgur.com/GOdYRS6.png)

安裝 Docker
``` bash=
sudo apt-get install -y docker.io    #安裝 Docker
```
![](https://i.imgur.com/rjE5CHJ.png)

參考 Kafka Docker 安裝教學文件

## 2. 建立 Kafka Producer&Consumer Container
**第 1 步：抓 Image**
```
docker pull yenmochi/kafka_container
```
**第 2 步：建立一個網域給 Kafka Producer&Consumer Container**
```
//docker network create --subnet=[欲建立網域]  kafkaservernetwork 
docker network create --subnet=172.19.0.0/16  kafkaservernetwork 
```
**第 3 步：Run kafka Producer&Consumer container**
```
//docker run -d -it --name kafkaserver --network kafkaservernetwork --ip [欲建立的IP] yenmochi/kafka_container
docker run -d -it --name kafkaserver --network kafkaservernetwork --ip 172.19.0.2 yenmochi/kafka_container
```

**第 4 步：進入 Producer&Consumer Container**
```
docker exec -it kafkaserver bash
```
**第 5 步：進入 Python Producer&Consumer 所在資料夾位置**
```
cd /kafkatest
```
**第 6 步：Run Kafka Producer container**

```
//python3 csv_to_kafka.py [要傳入的IP:PORT] [Topic名稱] [acks控制選項] [模式選擇] [每筆數據間隔] [是否要打印數據]
python3 csv_to_kafka.py 172.18.0.3:9092 gameSrcTpc 0 1 1 1
```

***[acks控制選項]: 
0:最不可靠、速度最快
1:普通可靠、速度普通
-1:最可靠、速度最慢***

***[模式選擇]: 
0:只讀單一csv檔，無限輸出(Pandas先一次讀完再輸出) 速度最快
1:遍歷所有csv逐列輸出，(csv.reader邊讀邊輸出) 速度慢***

***[每筆數據間隔]: 
EX:設1->每秒像kafka打一筆資料***

**第 7 步：Run Kafka Consumer container**

```
//請記得使用 vim consumer.py 修改 Consumer 的 ip 及 Topic 名稱
python3 consumer.py 
```