Почему Docker не может найти мой файл sql для импорта? - PullRequest
0 голосов
/ 24 ноября 2018

У меня есть файл SQL, который я пытаюсь импортировать в локальный экземпляр докера.Я запускаю следующую команду:

docker exec -i 868b7935cc37  ../my.file.sql -u {user} --password={password} {dbName}

При запуске я получаю следующую ошибку: Ошибка выполнения OCI: ошибка exec: container_linux.go: 348: запуск процесса контейнера вызвал "exec: \ "../ my.file.sql \": stat ../my.file.sql: нет такого файла или каталога ": unknown

Я только один каталог от файла, следовательно,../ в команде.Я говорил с человеком, который дал мне файл, и имя пользователя, пароль и имя все правильно.Ни одно из имен, паролей и т. Д. Не содержит специальных символов.

Я чувствую, что я прямо там.Я не знаю, почему я получаю ошибку no such file or directory.

Любая и вся помощь приветствуется!

Проверка Docker дает мне

[
{
    "Id": "868b7935cc371a0eef47e84a7ffbddb99b03cfc93e735af31e5b5754680c1f98",
    "Created": "2018-11-15T20:11:44.9362404Z",
    "Path": "docker-entrypoint.sh",
    "Args": [
        "mysqld"
    ],
    "State": {
        "Status": "running",
        "Running": true,
        "Paused": false,
        "Restarting": false,
        "OOMKilled": false,
        "Dead": false,
        "Pid": 4819,
        "ExitCode": 0,
        "Error": "",
        "StartedAt": "2018-11-23T23:15:52.5735445Z",
        "FinishedAt": "2018-11-21T01:52:31.3103165Z"
    },
    "Image": "sha256:583a6e3a3c98793a6c8a3b09d291b574da66f7e1fba6ebfebe3e93c88c3b443a",
    "ResolvConfPath": "/var/lib/docker/containers/868b7935cc371a0eef47e84a7ffbddb99b03cfc93e735af31e5b5754680c1f98/resolv.conf",
    "HostnamePath": "/var/lib/docker/containers/868b7935cc371a0eef47e84a7ffbddb99b03cfc93e735af31e5b5754680c1f98/hostname",
    "HostsPath": "/var/lib/docker/containers/868b7935cc371a0eef47e84a7ffbddb99b03cfc93e735af31e5b5754680c1f98/hosts",
    "LogPath": "/var/lib/docker/containers/868b7935cc371a0eef47e84a7ffbddb99b03cfc93e735af31e5b5754680c1f98/868b7935cc371a0eef47e84a7ffbddb99b03cfc93e735af31e5b5754680c1f98-json.log",
    "Name": "/dmr_mysql_1",
    "RestartCount": 0,
    "Driver": "overlay2",
    "Platform": "linux",
    "MountLabel": "",
    "ProcessLabel": "",
    "AppArmorProfile": "",
    "ExecIDs": null,
    "HostConfig": {
        "Binds": [
            "dmr_local_mysql_data:/var/lib/mysql:rw",
            "dmr_local_mysql_data_backups:/backups:rw"
        ],
        "ContainerIDFile": "",
        "LogConfig": {
            "Type": "json-file",
            "Config": {}
        },
        "NetworkMode": "dmr_default",
        "PortBindings": {
            "3306/tcp": [
                {
                    "HostIp": "",
                    "HostPort": "3306"
                }
            ]
        },
        "RestartPolicy": {
            "Name": "",
            "MaximumRetryCount": 0
        },
        "AutoRemove": false,
        "VolumeDriver": "",
        "VolumesFrom": [],
        "CapAdd": null,
        "CapDrop": null,
        "Dns": [],
        "DnsOptions": [],
        "DnsSearch": [],
        "ExtraHosts": null,
        "GroupAdd": null,
        "IpcMode": "shareable",
        "Cgroup": "",
        "Links": null,
        "OomScoreAdj": 0,
        "PidMode": "",
        "Privileged": false,
        "PublishAllPorts": false,
        "ReadonlyRootfs": false,
        "SecurityOpt": null,
        "UTSMode": "",
        "UsernsMode": "",
        "ShmSize": 67108864,
        "Runtime": "runc",
        "ConsoleSize": [
            0,
            0
        ],
        "Isolation": "",
        "CpuShares": 0,
        "Memory": 0,
        "NanoCpus": 0,
        "CgroupParent": "",
        "BlkioWeight": 0,
        "BlkioWeightDevice": null,
        "BlkioDeviceReadBps": null,
        "BlkioDeviceWriteBps": null,
        "BlkioDeviceReadIOps": null,
        "BlkioDeviceWriteIOps": null,
        "CpuPeriod": 0,
        "CpuQuota": 0,
        "CpuRealtimePeriod": 0,
        "CpuRealtimeRuntime": 0,
        "CpusetCpus": "",
        "CpusetMems": "",
        "Devices": null,
        "DeviceCgroupRules": null,
        "DiskQuota": 0,
        "KernelMemory": 0,
        "MemoryReservation": 0,
        "MemorySwap": 0,
        "MemorySwappiness": null,
        "OomKillDisable": false,
        "PidsLimit": 0,
        "Ulimits": null,
        "CpuCount": 0,
        "CpuPercent": 0,
        "IOMaximumIOps": 0,
        "IOMaximumBandwidth": 0,
        "MaskedPaths": [
            "/proc/acpi",
            "/proc/kcore",
            "/proc/keys",
            "/proc/latency_stats",
            "/proc/timer_list",
            "/proc/timer_stats",
            "/proc/sched_debug",
            "/proc/scsi",
            "/sys/firmware"
        ],
        "ReadonlyPaths": [
            "/proc/asound",
            "/proc/bus",
            "/proc/fs",
            "/proc/irq",
            "/proc/sys",
            "/proc/sysrq-trigger"
        ]
    },
    "GraphDriver": {
        "Data": {
            "LowerDir": "/var/lib/docker/overlay2/830398a5558d1451a520a7219971cfb6f869cfc7aa149373eab77287c2924ee4-init/diff:/var/lib/docker/overlay2/d6fbcced29e35b61a9bb5a8db9cec8c561fdcba5b52a61c62af886de180aa93a/diff:/var/lib/docker/overlay2/289d826020070599fe59d4171f40bfcfc41de1bbefa29bcc4cfd0bc0ab5ebb3c/diff:/var/lib/docker/overlay2/05572289cc7498d3d29d09d0b9745c0387c56ef06919ef27517c9131a585a895/diff:/var/lib/docker/overlay2/eed1357572b7a67729f776846e8109fa9493e0083d88bb3edeb2c95410bfa2b4/diff:/var/lib/docker/overlay2/8163d89b53f562d5476ffc8ccabdcb6a935ee932b2544f0d42ada9650b67eb46/diff:/var/lib/docker/overlay2/8ea425a1f09814f6e6f3f9d8f887c0829b2151e359425ea985792a75e65acd90/diff:/var/lib/docker/overlay2/ae06aa0cbb069d340970beb76ad8b278ac4b4f97eaceb1f3b36cb4ba15a2128c/diff:/var/lib/docker/overlay2/16350f1b36b1eb496286e5ad4cdea02f9931d33a6869a6105da766e40793d81a/diff:/var/lib/docker/overlay2/305da8336df57edf64806244981141bd6a05b168653a48f97223e7da0a3ac477/diff:/var/lib/docker/overlay2/2265f0da439e923b98007d292dda922f3a90298bb879c07f2f41afa66c971c7b/diff:/var/lib/docker/overlay2/b5e59e46468f95a1d243b6c99b7421b41715f7ad11bda4095901244a6552bbb9/diff:/var/lib/docker/overlay2/76fdb756320d579aed7713e27b4760a5266fcfde5358903d9e4351d9c77a4b9d/diff:/var/lib/docker/overlay2/58952f226dee428fecc6cf23f45e39b4084f10c6214f3ded03ebd87a250318bd/diff:/var/lib/docker/overlay2/7f03ca1e222e9ee48d8332e6ec830cb0a2a7a27167d2698847d41d3f18c47bd3/diff",
            "MergedDir": "/var/lib/docker/overlay2/830398a5558d1451a520a7219971cfb6f869cfc7aa149373eab77287c2924ee4/merged",
            "UpperDir": "/var/lib/docker/overlay2/830398a5558d1451a520a7219971cfb6f869cfc7aa149373eab77287c2924ee4/diff",
            "WorkDir": "/var/lib/docker/overlay2/830398a5558d1451a520a7219971cfb6f869cfc7aa149373eab77287c2924ee4/work"
        },
        "Name": "overlay2"
    },
    "Mounts": [
        {
            "Type": "volume",
            "Name": "dmr_local_mysql_data_backups",
            "Source": "/var/lib/docker/volumes/dmr_local_mysql_data_backups/_data",
            "Destination": "/backups",
            "Driver": "local",
            "Mode": "rw",
            "RW": true,
            "Propagation": ""
        },
        {
            "Type": "volume",
            "Name": "dmr_local_mysql_data",
            "Source": "/var/lib/docker/volumes/dmr_local_mysql_data/_data",
            "Destination": "/var/lib/mysql",
            "Driver": "local",
            "Mode": "rw",
            "RW": true,
            "Propagation": ""
        }
    ],
    "Config": {
        "Hostname": "868b7935cc37",
        "Domainname": "",
        "User": "",
        "AttachStdin": false,
        "AttachStdout": false,
        "AttachStderr": false,
        "ExposedPorts": {
            "3306/tcp": {},
            "33060/tcp": {}
        },
        "Tty": false,
        "OpenStdin": false,
        "StdinOnce": false,
        "Env": [
            "MYSQL_DATABASE=dmr",
            "MYSQL_USER=dmr",
            "MYSQL_PASSWORD=dmr",
            "MYSQL_ROOT_PASSWORD=dmr",
            "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
            "GOSU_VERSION=1.7",
            "MYSQL_MAJOR=5.7",
            "MYSQL_VERSION=5.7.24-1debian9"
        ],
        "Cmd": [
            "mysqld"
        ],
        "ArgsEscaped": true,
        "Image": "dmr_mysql",
        "Volumes": {
            "/backups": {},
            "/var/lib/mysql": {}
        },
        "WorkingDir": "",
        "Entrypoint": [
            "docker-entrypoint.sh"
        ],
        "OnBuild": null,
        "Labels": {
            "com.docker.compose.config-hash": "ffc27388c47a8468694fe5412bb06e3dda7a7b083d378fba1ab57eace2b3628e",
            "com.docker.compose.container-number": "1",
            "com.docker.compose.oneoff": "False",
            "com.docker.compose.project": "dmr",
            "com.docker.compose.service": "mysql",
            "com.docker.compose.version": "1.22.0"
        }
    },
    "NetworkSettings": {
        "Bridge": "",
        "SandboxID": "cbccae535b05d954c1592710bb808814a87bcfbee6617fd1fb0a8f44561faec7",
        "HairpinMode": false,
        "LinkLocalIPv6Address": "",
        "LinkLocalIPv6PrefixLen": 0,
        "Ports": {
            "3306/tcp": [
                {
                    "HostIp": "0.0.0.0",
                    "HostPort": "3306"
                }
            ],
            "33060/tcp": null
        },
        "SandboxKey": "/var/run/docker/netns/cbccae535b05",
        "SecondaryIPAddresses": null,
        "SecondaryIPv6Addresses": null,
        "EndpointID": "",
        "Gateway": "",
        "GlobalIPv6Address": "",
        "GlobalIPv6PrefixLen": 0,
        "IPAddress": "",
        "IPPrefixLen": 0,
        "IPv6Gateway": "",
        "MacAddress": "",
        "Networks": {
            "dmr_default": {
                "IPAMConfig": null,
                "Links": null,
                "Aliases": [
                    "868b7935cc37",
                    "mysql"
                ],
                "NetworkID": "eaf16cd4854d6bcb607ca7598c5337d42b917164404de82f873b9567ab480df7",
                "EndpointID": "c98e525c7c4f22e5bfb7b6041a2f94fbf81561f518d2a6b550768ef6c32e57d5",
                "Gateway": "172.18.0.1",
                "IPAddress": "172.18.0.2",
                "IPPrefixLen": 16,
                "IPv6Gateway": "",
                "GlobalIPv6Address": "",
                "GlobalIPv6PrefixLen": 0,
                "MacAddress": "02:42:ac:12:00:02",
                "DriverOpts": null
            }
        }
    }
}

]

Ответы [ 2 ]

0 голосов
/ 24 ноября 2018

Вам не нужно docker exec для взаимодействия с серверами, работающими в контейнерах.Просто используйте обычные клиентские программы, которые вы обычно используете для общения с ними.

Например, если вы запустили контейнер базы данных, опубликовав обычный порт MySQL, например

docker run -p3306:3306 ... mysql

, тоВы можете запустить свой скрипт, установив клиент командной строки mysql, а затем запустив

mysql -h 127.0.0.1 ../my.file.sql -u {user} --password={password} {dbName}

Если вы настроили свой Docker для получения прав root для доступа к нему (очень разумная настройка), тогда этоимеет дополнительное преимущество: не требуется sudo только для его запуска.

0 голосов
/ 24 ноября 2018

Я считаю, что проблема заключается в неправильном понимании того, как работает docker exec.Если вы рассматриваете свой контейнер как удаленный компьютер, а docker exec - как команду, которую вы запускаете на локальном компьютере, которая заставит удаленный компьютер выполнить некоторую команду, установленную на удаленном компьютере, это может стать более ясным

Прямо сейчас это выглядит так, как будто у вас есть файл на вашем локальном компьютере (вне контейнера), и вы передаете его как команду, которую хотите, чтобы удаленный компьютер (внутри контейнера) выполнялся, но файл находится на вашем локальном компьютере, а неудаленный, поэтому, даже если он может быть обработан (на странице справки Docker сказано, что это должен быть исполняемый файл - это исполняемый файл sql в этом контексте?) файл не находится на машине, которая будет его обрабатывать.

Вызов docker exec и передача ссылки на файл для файла вне контейнера не приводит к тому, что локальный файл отправляется в контейнер и выполняется внутри

Таким образом, я думаю, что вы 'Вам нужно будет сделать что-то более похожее на

docker cp ../myfile.sql DOCKERCONTAINERNAME:/root/myfile.sql

Чтобы скопировать файл в контейнер, а затем что-то вроде:

docker exec DOCKERCONTAINERNAME mysqlimporttool -u mysqluser -p pass /root/myfile.sql

Чтобы Docker запустил инструмент импорта в контейнере для вас ипередать аргументы, которые вы указали.Этот инструмент запустится внутри контейнера и обработает файл, который вы скопировали в контейнер на первом шаге

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...