【问题标题】:Access data from external container从外部容器访问数据
【发布时间】:2020-02-02 03:53:03
【问题描述】:

我有一些 docker 镜像运行如下:

77beec19859a        nginx:latest                "nginx -g 'daemon of…"   9 seconds ago       Up 4 seconds        0.0.0.0:8000->80/tcp                       dockerisedphp_web_1
d48461d800e0        php:fpm                     "docker-php-entrypoi…"   9 seconds ago       Up 4 seconds        9000/tcp                                   dockerisedphp_php_1
a6ed456a4cc2        phpmyadmin/phpmyadmin       "/docker-entrypoint.…"   12 hours ago        Up 12 hours         0.0.0.0:8080->80/tcp                       sc-phpmyadmin
9e0dda76c110        firewatchdocker_webserver   "docker-php-entrypoi…"   12 hours ago        Up 12 hours         0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp   7.4.x-webserver
beba7cb1ee14        firewatchdocker_mysql       "docker-entrypoint.s…"   12 hours ago        Up 12 hours         0.0.0.0:3306->3306/tcp, 33060/tcp          mysql
000e0f21d46e        redis:latest                "docker-entrypoint.s…"   12 hours ago        Up 12 hours         0.0.0.0:6379->6379/tcp                     sc-redis

问题是:我的PHP脚本需要从容器dockerisedphp_web_1访问mysql容器内mysql上的数据。

容器之间可以进行这种数据交换吗?

其实我是用 docker-compose 来调出来的。

【问题讨论】:

  • Documentation 说:“服务的每个容器都加入默认网络,并且该网络上的其他容器都可以访问,并且它们可以通过与容器名称相同的主机名发现。”跨度>
  • @Alexander,mysql 端口是 3306 不工作,当我要求 php 连接时无法连接。
  • 我认为,有必要澄清这个问题:显示您使用的 docker-compose 文件 sn-p 和连接字符串。另请参阅minimal reproducible example

标签: docker docker-compose containers


【解决方案1】:

如果你只需要对数据做一些事情,而你不需要在主机上,你可以使用docker exec

如果你想拷贝到宿主机,或者从宿主机拷贝数据到容器中,可以使用docker cp

您可以使用docker exec在mysql容器内运行mysql客户端,将结果写入文件,然后使用docker cp将输出复制到主机。

或者您可以在主机上执行docker exec mysql-container-name mysql mysql-args > output 之类的操作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-09-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-03
    • 2023-04-04
    • 2014-02-04
    相关资源
    最近更新 更多