Dockerコンテナ間通信

Dockerコンテナ間通信

CoreOS(Dockerがプレインストールされている)では、2つのコンテナが一緒に通信できなくなります。

Gogsコンテナ(Gitサーバー)から呼び出されるMySqlコンテナを設定しようとしています。

だからこれが私がしたことです:

ポートは127.0.0.1に設定されており、外部からアクセスできません。

docker run --name mysql1 -v /volumedata/mysql/mysql1:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=PWDHERE -p 127.0.0.1:33061:3306 -d mysql/mysql-server:latest --character-set-サーバー=utf8 --collat​​ion-server=utf8_general_ci

それからインストールしました。

docker run --name=go-git-server1 -p 10022:22 -p 10080:3000 -v /data/go-git-server1:/data gogs/gogs

私が確認したとき、両方とも実行していました。ドッカーps -a問題なく「go-git-server1」インストールページにアクセスできますが、ホストアドレスを指定すると次のようになります。

127.0.0.1:33061

Gogs設定ページで確認した後、次のエラーが発生します。

無効なデータベース設定:tcp 127.0.0.1:33061ダイヤル:getsockopt:接続が拒否されました

私は「go-git-server1」コンテナが「docker ps -a」によって提供されたIPとポートを使用してMySqlデータベースにアクセスするのに十分であると思います(そして初期の「docker run」を使用してすでに手動で設定しています) )。

私は一歩も逃したのですか?他のコンテナからMySqlコンテナにアクセスするために実行する必要がある他のタスクはありますか?

これはdocker Inspection mysql1が提供するものです:

 docker inspect mysql1
[
{
    "Id": "c811d29d866ef977eb0cb93a9697bc4afd2a51e828b7757a5ea8962d784f0166",
    "Created": "2016-07-03T21:55:29.693884299Z",
    "Path": "/entrypoint.sh",
    "Args": [
        "-p",
        "127.0.0.1:33061:3306"
    ],
    "State": {
        "Status": "exited",
        "Running": false,
        "Paused": false,
        "Restarting": false,
        "OOMKilled": false,
        "Dead": false,
        "Pid": 0,
        "ExitCode": 1,
        "Error": "",
        "StartedAt": "2016-07-26T18:23:36.144915853Z",
        "FinishedAt": "2016-07-26T18:23:38.281589339Z"
    },
    "Image": "4e66d61404cc06e3c40c46f5e83bda5a14dda2838b84210c7eb5a3d6e1f7752b",
    "ResolvConfPath": "/var/lib/docker/containers/c811d29d866ef977eb0cb93a9697bc4afd2a51e828b7757a5ea8962d784f0166/resolv.conf",
    "HostnamePath": "/var/lib/docker/containers/c811d29d866ef977eb0cb93a9697bc4afd2a51e828b7757a5ea8962d784f0166/hostname",
    "HostsPath": "/var/lib/docker/containers/c811d29d866ef977eb0cb93a9697bc4afd2a51e828b7757a5ea8962d784f0166/hosts",
    "LogPath": "/var/lib/docker/containers/c811d29d866ef977eb0cb93a9697bc4afd2a51e828b7757a5ea8962d784f0166/c811d29d866ef977eb0cb93a9697bc4afd2a51e828b7757a5ea8962d784f0166-json.log",
    "Name": "/mysql1",
    "RestartCount": 0,
    "Driver": "overlay",
    "ExecDriver": "native-0.2",
    "MountLabel": "system_u:object_r:svirt_lxc_file_t:s0:c724,c935",
    "ProcessLabel": "system_u:system_r:svirt_lxc_net_t:s0:c724,c935",
    "AppArmorProfile": "",
    "ExecIDs": null,
    "HostConfig": {
        "Binds": [
            "/donnees/mysql/mysql1:/var/lib/mysql"
        ],
        "ContainerIDFile": "",
        "LxcConf": [],
        "Memory": 0,
        "MemoryReservation": 0,
        "MemorySwap": 0,
        "KernelMemory": 0,
        "CpuShares": 0,
        "CpuPeriod": 0,
        "CpusetCpus": "",
        "CpusetMems": "",
        "CpuQuota": 0,
        "BlkioWeight": 0,
        "OomKillDisable": false,
        "MemorySwappiness": -1,
        "Privileged": false,
        "PortBindings": {},
        "Links": null,
        "PublishAllPorts": false,
        "Dns": [],
        "DnsOptions": [],
        "DnsSearch": [],
        "ExtraHosts": null,
        "VolumesFrom": null,
        "Devices": [],
        "NetworkMode": "default",
        "IpcMode": "",
        "PidMode": "",
        "UTSMode": "",
        "CapAdd": null,
        "CapDrop": null,
        "GroupAdd": null,
        "RestartPolicy": {
            "Name": "no",
            "MaximumRetryCount": 0
        },
        "SecurityOpt": null,
        "ReadonlyRootfs": false,
        "Ulimits": null,
        "LogConfig": {
            "Type": "json-file",
            "Config": {}
        },
        "CgroupParent": "",
        "ConsoleSize": [
            0,
            0
        ],
        "VolumeDriver": ""
    },
    "GraphDriver": {
        "Name": "overlay",
        "Data": {
            "LowerDir": "/var/lib/docker/overlay/4e66d61404cc06e3c40c46f5e83bda5a14dda2838b84210c7eb5a3d6e1f7752b/root",
            "MergedDir": "/var/lib/docker/overlay/c811d29d866ef977eb0cb93a9697bc4afd2a51e828b7757a5ea8962d784f0166/merged",
            "UpperDir": "/var/lib/docker/overlay/c811d29d866ef977eb0cb93a9697bc4afd2a51e828b7757a5ea8962d784f0166/upper",
            "WorkDir": "/var/lib/docker/overlay/c811d29d866ef977eb0cb93a9697bc4afd2a51e828b7757a5ea8962d784f0166/work"
        }
    },
    "Mounts": [
        {
            "Source": "/donnees/mysql/mysql1",
            "Destination": "/var/lib/mysql",
            "Mode": "",
            "RW": true
        }
    ],
    "Config": {
        "Hostname": "c811d29d866e",
        "Domainname": "",
        "User": "",
        "AttachStdin": false,
        "AttachStdout": false,
        "AttachStderr": false,
        "ExposedPorts": {
            "3306/tcp": {},
            "33060/tcp": {}
        },
        "Tty": false,
        "OpenStdin": false,
        "StdinOnce": false,
        "Env": [
            "MYSQL_ROOT_PASSWORD=mypwd",
            "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
            "PACKAGE_URL=https://repo.mysql.com/yum/mysql-5.7-community/docker/x86_64/mysql-community-server-minimal-5.7.13-1.el7.x86_64.rpm"
        ],
        "Cmd": [
            "-p",
            "127.0.0.1:33061:3306"
        ],
        "Image": "mysql/mysql-server:latest",
        "Volumes": {
            "/var/lib/mysql": {}
        },
        "WorkingDir": "",
        "Entrypoint": [
            "/entrypoint.sh"
        ],
        "OnBuild": null,
        "Labels": {},
        "StopSignal": "SIGTERM"
    },
    "NetworkSettings": {
        "Bridge": "",
        "SandboxID": "",
        "HairpinMode": false,
        "LinkLocalIPv6Address": "",
        "LinkLocalIPv6PrefixLen": 0,
        "Ports": null,
        "SandboxKey": "",
        "SecondaryIPAddresses": null,
        "SecondaryIPv6Addresses": null,
        "EndpointID": "",
        "Gateway": "",
        "GlobalIPv6Address": "",
        "GlobalIPv6PrefixLen": 0,
        "IPAddress": "",
        "IPPrefixLen": 0,
        "IPv6Gateway": "",
        "MacAddress": "",
        "Networks": {
            "bridge": {
                "EndpointID": "",
                "Gateway": "",
                "IPAddress": "",
                "IPPrefixLen": 0,
                "IPv6Gateway": "",
                "GlobalIPv6Address": "",
                "GlobalIPv6PrefixLen": 0,
                "MacAddress": ""
            }
        }
    }
}
]

私は与えられたIPを試しました

ip -4 addr show docker0 | grep -Po 'inet \K[\d.]+'

...しかし、127.0.0.1では失敗しますが、いいえ、うまくいきません。

Dockerコンテナ通信の最初の段階で少し輻輳しているようです。

答え1

まあ、これはLinux / Docker / PuTTy初心者の質問なので、コンテナの実際のIPアドレスがどこにあるかを調べるのに時間がかかりました。実はもう少し調べなければなりませんでした。ドッカー検査結果。

ショートカットは次のとおりです。

docker inspect --format '{{ .NetworkSettings.IPAddress }}' mysql1

これは、他の人がアクセスできるコンテナのIPアドレスを提供します。ドッカー検査でも見ることができます。

gogsを設定するには、次のようにmysqlコンテナに接続して対話します。

docker exec -i mysql1 bash

次に、データベースを生成するために必要なSQLコマンドを提供します。

mysql -e 'CREATE DATABASE IF NOT EXISTS gogs CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;' -p 'passwordofdb'

今、すべてが正常です。 gogs が設定され、両方のコンテナが通信しています。

関連情報