Docker UnicodeEncodeError: ‘ascii’ codec can’t encode characters in position
在容器里查詢nova服務的時候字符集報錯問題留檔及處理方法:
1、在容器里執行nova list –all 提示
[root@stack1 region_01]# nova list –all
ERROR (UnicodeEncodeError): ‘ascii’ codec can’t encode characters in position 4418-4419: ordinal not in range(128)
[root@stack1 region_01]# nova list
ERROR (UnicodeEncodeError): ‘ascii’ codec can’t encode characters in position 3718-3719: ordinal not in range(128)
[root@stack1 region_01]#
排查及處理思路如下:
1、退出容器,查詢宿主機字符集locale的設置為en_US.UTF-8:
[root@stack1 region_01]# exit
[root@stack1 ~]# locale
LANG=en_US.UTF-8
LC_CTYPE=”en_US.UTF-8″
LC_NUMERIC=”en_US.UTF-8″
LC_TIME=”en_US.UTF-8″
LC_COLLATE=”en_US.UTF-8″
LC_MONETARY=”en_US.UTF-8″
LC_MESSAGES=”en_US.UTF-8″
LC_PAPER=”en_US.UTF-8″
LC_NAME=”en_US.UTF-8″
LC_ADDRESS=”en_US.UTF-8″
LC_TELEPHONE=”en_US.UTF-8″
LC_MEASUREMENT=”en_US.UTF-8″
LC_IDENTIFICATION=”en_US.UTF-8″
LC_ALL=
[root@stack1 ~]#
2、進入剛執行命令報錯的容器,手工修改命令行的編碼utf-8,保持跟宿主機一致,此時再執行nova list查詢命令恢復正常。
[root@stack1 ~]# docker exec -it kolla-ansible-deploy /bin/bash
[root@stack1 region_01]# export LANG=en_US.UTF-8
[root@stack1 region_01]# nova list –all
ERROR (CommandError): You must provide a user name/id (via –os-username, –os-user-id, env[OS_USERNAME] or env[OS_USER_ID]) or an auth token (via –os-token).
[root@stack1 region_01]#
[root@stack1 region_01]# source admin-openrc.sh
[root@stack1 region_01]#
[root@stack1 region_01]# nova list –all
+————————————–+————————-+———————————-+———+————+————-+——————————————————————————+
| ID | Name | Tenant ID | Status | Task State | Power State | Networks |
+————————————–+————————-+———————————-+———+————+————-+——————————————————————————+
| 06febeeb-f41d-464e-814f-4732e95e6e77 | DB | c4dca344d4b9436aa1cb15c6a54a2c6b | ACTIVE | – | Running | manage_net=
文章最後,給大家分享幾個有關微軟全家桶學習參考鏈接,希望可以幫忙有需要的朋友。
微軟學習類網站匯總 |
||