1. 程式人生 > >docker下終端無法輸入中文問題

docker下終端無法輸入中文問題

最近專案切換到docker管理,資料庫查詢也改成進docker容器訪問mysql。使用時先是發現中文亂碼,這個首先想到就是常見的mysql設定編碼問題。臨時處理的話先是應急的
set nams utf8 ;

這樣查詢就暫時ok了的。

上面只是應急,因為每次訪問都需要set一次。根治的話還是得改mysql的my.cnf了。對應docker裡的位置就是/etc/mysql/my.cnf

這裡寫圖片描述

(這裡可能得裝個vim了,基礎映象不能vi,apt-get安裝就行)

操作完重連mysql,執行show variables like ‘%char%’;一把
就可以看到表面UTF-8了。

上面都是常規操作了,發現還是鍵入中文,無論是在mysql終端,還是容器內終端都不能輸入中文,這個時候初步判斷是映象的locale問題了。

這裡寫圖片描述

剩下就是解決locale的問題了。也很簡單,只需要啟動或者進入容器的時候添加個引數env LANG=C.UTF-8即可。
如:
docker run -i -t mysql env LANG=C.UTF-8 /bin/bash

如果是k8s的話也是同理可得:
//啟動
kubectl run -it –rm –image=mysql mysql-client – env LANG=C.UTF-8 /bin/bash

//進入pod
kubectl exec -ti mysql-client – env LANG=C.UTF-8 /bin/bash

這個時候再到容器內locale就能看到編碼為utf-8的了。輸入中文的問題也就解決了。