2020年3月29日日曜日

dockerのトラブルシューティングメモ

dockerイメージを更新してリスタートしようとしたら、以下のエラーが発生しました。
ERROR: for xxx  You cannot remove a running container b0f9049739ac6c4b178e673d25ac295a6291f3d957905148e98e35cce1571163. Stop the container before attempting removal or use -f
どうやら前のdockerが残ってて停止できないようです。「docker ps」で確認したら、2つが動いてます。
$ docker ps
CONTAINER ID        IMAGE                                                                                    COMMAND                  CREATED             STATUS                  PORTS                                         NAMES
b0f9049739ac        xxxx:dev-53e52afc20cc7c382eb221a9db742ccc618dd227   "/opt/docker/bin/i..."   3 minutes ago       Up 3 minutes                                                          xxxx
ff76c3ef8849        xxxx:dev-8d5447725fd6b306ed91a5cd41e720b343e219dd   "/opt/docker/bin/i..."   26 hours ago        Up 26 hours                                                           ff76c3ef8849_xxxx
もう強制削除しかないので、-fをつけて強制削除してみました。
# docker rm -f <コンテナID>
docker rm -f b0f9049739ac
docker rm -f ff76c3ef8849
これで起動できるだろうと思って、「docker up -d」をうったら、今度更にエラーが出た。。。。(汗!!!)
$ docker-compose up -d
Creating xxxx ... error
 
ERROR: for xxxx  Cannot start service xxxx: service endpoint with name xxxx already exists
古いコンテナのEndpointが残っています。
エンドポイントを調べたいですが、ネットワーク名は分からない、一覧を出してみます。
#docker network ls
NETWORK ID          NAME                 DRIVER              SCOPE
62d8386207b3        bridge               bridge              local
9d62029db27f        host                 host                local
8dd261f6a3cf        none                 null                local
hostが一番あってそうなので、中身をチェックしてみることにしました。
$ docker network inspect host
[
    {
        "Name""host",
        "Id""9d62029db27ffc982d0bedaebe2ba6de3b84c1f57ecefbf74c6228a9f5436c86",
        "Created""2018-05-21T19:36:40.649319874+09:00",
        "Scope""local",
        "Driver""host",
        "EnableIPv6": false,
        "IPAM": {
            "Driver""default",
            "Options": null,
            "Config": []
        },
        "Internal": false,
        "Attachable": false,
        "Containers": {
            "19c8189cbc9cc7411236bda85e3a085ea8a1018496b95f06a65e3139ab89361b": {
                "Name""xxxx",
                "EndpointID""b4f737bbf643f8da34f16718cfac0866754de3f72363cf9034a7d4f102ab9fa5",
                "MacAddress""",
                "IPv4Address""",
                "IPv6Address"""
            },
            (略)
        },
        "Options": {},
        "Labels": {}
    }
]
見事に古いコンテナを見つけました。削除します。
#docker network disconnect -f <network name> <container name>
docker network disconnect -f host xxxx
もう一回「docker up -d」をうったら、無事に復旧できました。

2020年1月28日火曜日

「kubectl get all」で実行しても全リソースが表示されない件

kubernetesの初心者です。
全リソースを表示するためよく「kubectl get all」を使います。
何故か表示されてないリソースもあることに気づきました。

解決方法

調査したところ、namespaceの指定が足りて無いことが分かりました。
namespaceを指定しないと、デフォルトnamespaceのリソースが表示されます。。
namespaceを関係なく全リソースを表示するには、「-A」をつける必要があります。

namespace 関係なく前リソースを表示
kubectl get all -A
 
# 特定のnamespaceのリソース表示
kubectl get all --namespace=[namespace名]
 
default namespaceのリソース表示
kubectl get all

2020年1月17日金曜日

mysqlのload data 時に「ERROR 3948 (42000): Loading local data is disabled; this must be enabled on both the client and server sides」エラーが発生しました。

久々にlocalのDBにデータをloadしようと思ったら、以下のエラーがおきました。
mysql> load data local infile '/tmp/test.log' into table log FIELDS TERMINATED BY ',';
ERROR 3948 (42000): Loading local data is disabled; this must be enabled on both the client and server sides

以下の2つ手順でエラーを解消することができました。
Step1、 my.cnfファイルに 行「loose-local-infile = 1」を追加
 ※ my.cnf変更後にmysqlの再起動が必要 自分の場合コマンド「mysql.server restart」を実行しました。

Step2、mysqlにログイン時に「--local-infile=1」を付ける
 例: mysql -uroot --local-infile=1 logdb;