dockerいろいろ陥った時のメモ

# このメモ

多くの人はこんなことではまらないと思うので、自分の備忘録です。

# その１：なぜか嵌った罠：dockerのネットワークに接続できない。それに気付けなかったこと。

MacOSXでDockerToolBoxを使って、Dockerコンテナを作成していた。
作成したコンテナがbridgeにつながっていない。

教科書通りにrunしたら普通はbridgeに入るのではないか・・・。
なぜか環境が異常をきたしていたのか、それで作成したコンテナにローカル側からアクセスできなかった。
というわけで、他にそういう事に遭遇した人がいれば教えてください。

## 正常であれば、以下のようにできると思う。

- docker-machineを作成する
- docker runする

以下の例ではMYSQLとNginxを起動してみている

```bash

docker run --name test-mysql -e MYSQL_ROOT_PASSWORD=password -p 3308:3306 -d mysql:latest

docker run --name ok-nginx -d -p 8080:80 nginx
```

- ホスト側から接続して確認する
    - nginxであれば、「//192.168.99.100:8080/」に接続して「Welcome to nginx！」の画面が見れる
    - MySQLであれば、「mysql -u root -p -h 192.168.99.100 -P 3308」でmysqlコンソールに入れる

今回はここで躓いた。
ホスト側から何度アクセスを試みても、繋がらない、どうしてだろうと、破棄と作成ばかりを繰り返して、時間を浪費してしまった。やっぱりきちんとドキュメントを読み切れていない。反省。
ここでやるべきことは、次にあげる**「dockerのネットワーク確認する」**でした。

- dockerのネットワーク確認する
これが大事だった！！
ここでちゃんtネットワークの「 docker network inspect bridge」でbridgeにつながっているかどうかを確認しておけば、すぐに何かがおかしいと気付けたはず。

正常であれば、bridgeに接続するdockerを確認できる。

```bash

[~/bohelabo 21:34:28]$ docker network inspect bridge
[
    {
        "Name": "bridge",
        "Id": "df96314c72193f670d28a72e606e498da7be7b3a3801c211196416b6a747ac83",
        "Scope": "local",
        "Driver": "bridge",
        "EnableIPv6": false,
        "IPAM": {
            "Driver": "default",
            "Options": null,
            "Config": [
                {
                    "Subnet": "172.17.0.0/16"
                }
            ]
        },
        "Internal": false,
        "Containers": {
            "4232a9941faf07ed39b59c2d60fd7bb64bde09715fef2b918d46e42b47436c23": {
                "Name": "some-mysql",
                "EndpointID": "463fa0ddddb8a7e22050665438261df06141ef47d1b9d54ea5f501046db92682",
                "MacAddress": "02:42:ac:11:00:05",
                "IPv4Address": "172.17.0.5/16",
                "IPv6Address": ""
            },
            "6036acde79451e62cc11771b6c662f06545a6e336bd8c12def68a13118722360": {
                "Name": "some-nginx",
                "EndpointID": "eafc8ad714fbb375c383cdf2702e00e715437763f87cf8906ed13acf4009f2d3",
                "MacAddress": "02:42:ac:11:00:02",
                "IPv4Address": "172.17.0.2/16",
                "IPv6Address": ""
            },
            "6c26bccf68cb8b1cb92c287381027841799ae2ec8fb6db508aef2df43cc1bc49": {
                "Name": "test-mysql",
                "EndpointID": "3fb03ecbb55329cbb22ffce0ea71b59f5a079e995ee1a4e9246c1f1bfff7e708",
                "MacAddress": "02:42:ac:11:00:06",
                "IPv4Address": "172.17.0.6/16",
                "IPv6Address": ""
            },
            "890efad657df5f2bf6b14f15cc67f826262bd5a121df88675195c55ad8299643": {
                "Name": "test-nginx",
                "EndpointID": "46ee088ec228baef74f52ee62a3c962da2e95d2592c41183c351e845ecbb4b0d",
                "MacAddress": "02:42:ac:11:00:03",
                "IPv4Address": "172.17.0.3/16",
                "IPv6Address": ""
            },
            "f864809cb7e68701ce2cbb9524ba5d0f3a8b221b914a237a4a31bb7d73bf0569": {
                "Name": "ok-nginx",
                "EndpointID": "ebe040a8487cb5c83521bcab7c70b7f9a75172aa895d15d5d644ff2068cfc934",
                "MacAddress": "02:42:ac:11:00:04",
                "IPv4Address": "172.17.0.4/16",
                "IPv6Address": ""
            }
        },
        "Options": {
            "com.docker.network.bridge.default_bridge": "true",
            "com.docker.network.bridge.enable_icc": "true",
            "com.docker.network.bridge.enable_ip_masquerade": "true",
            "com.docker.network.bridge.host_binding_ipv4": "0.0.0.0",
            "com.docker.network.bridge.name": "docker0",
            "com.docker.network.driver.mtu": "1500"
        },
        "Labels": {}
    }
]
```

### コンテナ全部落としたい、消したい

実験をたくさんやるとコンテナが蓄積されるので、以下のコマンドで一気にお掃除できます

```bash

docker stop $(docker ps -a -q)
docker rm $(docker ps -a -q)
docker rmi $(docker images  -q)
```

# その２：AWS EC2に作成したdocker-nachineの状況が見れない？

docker-machine sshで、作成したdockerのインスタンスに入って、「docker ps」をやるとですね、
[Cannot connect to the Docker daemon. Is the docker daemon running on this host?]で怒られます。

sudoしないと見れないですよ。

```bash

docker-machine ssh docker-bohe

ubuntu@docker-bohe:~$ whoami
ubuntu
ubuntu@docker-bohe:~$ docker ps
Cannot connect to the Docker daemon. Is the docker daemon running on this host?
ubuntu@docker-bohe:~$ sudo docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES
7a8ccadb7e0d        api_hapi            "/bin/sh -c 'cd /src "   2 days ago          Up 2 days           0.0.0.0:3333->3333/tcp   api_hapi_1
f5574efbd1c1        api_mroonga         "/root/entrypoint.sh"    2 days ago          Up 2 days           0.0.0.0:3306->3306/tcp   api_mroonga_1
ubuntu@docker-bohe:~$
```

# その３：aws configure list とdocker-machine createの関係(未解決)


さて、以下のような状態だったとしてます。
ここで、docker-machineを立ち上げてみましょう。

```bash
~/bohelabo 21:47:28]$ aws configure list
      Name                    Value             Type    Location
      ----                    -----             ----    --------
   profile                 bohelabo           manual    --profile
access_key     ****************FJIA shared-credentials-file
secret_key     ****************+ifS shared-credentials-file
    region                us-east-1      config-file    ~/.aws/config

```

ここで

```bash
$ export AWS_ACCESS_KEY_ID=AKID1234567890
$ export AWS_SECRET_ACCESS_KEY=MY-SECRET-KEY

[~/bohelabo 22:04:59]$ docker-machine create  --driver amazonec2  docker-bohe2
Running pre-create checks...
Error with pre-create check: "unable to find a subnet in the zone: us-east-1a"
```
us-east-1aなるサブネットはないとな。

```bash

[~/bohelabo 22:41:31]$ docker-machine create --driver amazonec2 --amazonec2-vpc-id vpc-c5d5d2a1 aws01
Running pre-create checks...
Error with pre-create check: "unable to find a subnet in the zone: us-east-1a"

[~/bohelabo 22:48:25]$ docker-machine create --driver amazonec2 --amazonec2-vpc-id vpc-c5d5d2a1 --amazonec2-subnet-id us-east-1b aws01
Error setting machine configuration from flags provided: unexpected EOF


[~/bohelabo 22:51:41]$ docker-machine --version
docker-machine version 0.7.0, build a650a40
```

ここで、一旦、aws configure listがクリアな状態で実行してみた

```
~/bohelabo 22:55:57]$ aws configure list
      Name                    Value             Type    Location
      ----                    -----             ----    --------
   profile                <not set>             None    None
access_key                <not set>             None    None
secret_key                <not set>             None    None
    region                <not set>             None    None
[~/bohelabo 22:56:06]$ export AWS_ACCESS_KEY_ID=XXXXXXX
[~/bohelabo 22:57:24]$ export AWS_SECRET_ACCESS_KEY=XXXXXXX

[~/bohelabo 22:57:30]$ docker-machine create --driver amazonec2  aws01
Running pre-create checks...
Error with pre-create check: "unable to find a subnet in the zone: us-east-1a"

[~/bohelabo 22:57:41]$ docker-machine create --driver amazonec2 --amazonec2-subnet-id us-east-1b aws01
Error setting machine configuration from flags provided: unexpected EOF
```

結果、やっぱり実行できない。

あれ、何かissue上がっている。。。でも解決してなさそうなんだけど、どうなのこれ・・・。

unexpected EOF · Issue #2661 · docker/machine 
https://github.com/docker/machine/issues/2661


というわけで、続debug中です。何でこんなに地雷が・・・。


# あとがき

そんなこんなで先週はロス時間長すぎて、泣きそうです。
そもそも、もっとこういう方法があるよ、などご指摘ありましたら、よろしくお願いします。

![ぼへぼへ.jpeg](https://qiita-image-store.s3.amazonaws.com/0/32215/5a7f46eb-2ce3-7d03-1f31-35b670f0f0de.jpeg)