LoginSignup
0
0

More than 5 years have passed since last update.

docker_image が吐くエラーが文字化けして読めなかった件

Posted at

(単に自分用のメモです。お急ぎの方は次行っちゃってください。でも初心者の方には役立つ情報もあるかも?)

IBM MQの評価のため、15分でWebSphere MQの環境を構築しメッセージの読み書きを行うというページに従ってコマンドを実行し、Docker コンテナ内で MQ が正常に動作することを確認しました。

次はこれを(練習のため)ansible に組み込もうと、VirtualBox + Vagrant + CentOS 7.2 の環境で以下のような ansible playboook を書きました(抜粋)。

- name: Building docker container
  docker_image:
    path: "{{ ansible_user_dir }}/mq-docker/8.0.0/"
    name: mq
    tag: mq

ansible 2.2 では docker モジュールは deprecated のようですので、docker_imageを使いました。

で、実行してみると、以下のようなエラーが発生しました。

TASK [mq-docker : Building docker container] ***********************************
fatal: [localhost]: FAILED! => {"changed": false, "failed": true, "msg": "Error connecting: Error while fetching server API version: ('Connection aborted.', error(13, '\\xe8\\xa8\\xb1\\xe5\\x8f\\xaf\\xe3\\x81\\x8c\\xe3\\x81\\x82\\xe3\\x82\\x8a\\xe3\\x81\\xbe\\xe3\\x81\\x9b\\xe3\\x82\\x93'))"}

エラーメッセージが文字化けしてよくわからんので(なんとなく想像はつくけど)、PHP で解読してみました。

vagrant@mq-docker:~/temp$ cat a.php
<?php
$a = '\\xe8\\xa8\\xb1\\xe5\\x8f\\xaf\\xe3\\x81\\x8c\\xe3\\x81\\x82\\xe3\\x82\\x8a\\xe3\\x81\\xbe\\xe3\\x81\\x9b\\xe3\\x82\\x93';
echo hex2bin(preg_replace("/x/", "", preg_replace("/\\\\/", "", $a))) . "\n";
vagrant@mq-docker:~/temp$ php a.php
許可がありません

やはり Permission Denied でしたね。
本当は ( ansbible / python / bash / docker のいずれか)がエラーメッセージを変にエンコードしないようにできればいいのでしょうけど、自分の実力では無理なので、諦めて以下のようにしました。

vagrant@mq-docker:~$ LANG=C ansible-playbook /etc/ansible/jobs/mq-docker.yml
(略)
TASK [mq-docker : Building docker container] ***********************************
fatal: [localhost]: FAILED! => {"changed": false, "failed": true, "msg": "Error connecting: Error while fetching server API version: ('Connection aborted.', error(13, 'Permission denied'))"}

これで正しくエラーを認識できるようになったので、次に進めます。

結論:そもそも日本語モードとか使うな?

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0