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=


 

文章最後,給大家分享幾個有關微軟全家桶學習參考鏈接,希望可以幫忙有需要的朋友。


Tags: