LoginSignup
18
16

More than 5 years have passed since last update.

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

Last updated at Posted at 2016-04-17

このメモ

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

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

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

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

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

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

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


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を確認できる。


[~/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": {}
    }
]

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

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


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

その2: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しないと見れないですよ。


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:~$

その3:aws configure list とdocker-machine createの関係(未解決)

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

~/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

ここで

$ 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なるサブネットはないとな。


[~/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

18
16
2

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
18
16