You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Windows Docker Desktop中让Ubuntu容器连接并操作MySQL容器?

Docker中Ubuntu容器连接MySQL容器的实现方案

基础准备

  1. 给Ubuntu容器安装MySQL客户端:进入Ubuntu容器后执行
    apt update && apt install -y mysql-client
    
  2. 确保MySQL容器中已存在myTestDB数据库(可以启动容器时通过环境变量自动创建,省去手动操作)

方法一:利用Docker默认Bridge网络(简单快捷)

Docker默认会将所有容器加入bridge网络,容器之间可以通过容器名称直接通信:

  1. 启动MySQL容器时,指定容器名、密码并自动创建目标数据库:
    docker run -d --name mySQLContainer -e MYSQL_ROOT_PASSWORD=root -e MYSQL_DATABASE=myTestDB mysql:latest
    
  2. 修改你的脚本:
    • 去掉sudo(容器内默认以root身份操作,无需sudo)
    • 将-h localhost替换为-h mySQLContainer(用MySQL容器名作为主机地址)
      修改后的脚本:
    #!/bin/bash
    
    # MAIN
    test=$(mysql -h mySQLContainer -uroot -proot myTestDB<<END
    CREATE TABLE test_table (id int, text varchar(64));
    END
    )
    
    echo $test
    
  3. 在Ubuntu容器中给脚本添加执行权限并运行:
    chmod +x your_script.sh
    ./your_script.sh
    

方法二:创建自定义Docker网络(更稳定,适合多容器场景)

如果默认网络存在通信问题,可以创建专属网络隔离容器:

  1. 创建自定义网络:
    docker network create my-docker-net
    
  2. 启动MySQL容器时加入该网络:
    docker run -d --name mySQLContainer --network my-docker-net -e MYSQL_ROOT_PASSWORD=root -e MYSQL_DATABASE=myTestDB mysql:latest
    
  3. 启动Ubuntu容器时也加入同一网络:
    docker run -itd --name myUbuntu --network my-docker-net ubuntu:latest
    
  4. 后续脚本修改和运行步骤和方法一完全一致

关键注意事项

  • MySQL默认限制root用户仅本地连接,需要手动授权:
    进入MySQL容器执行以下操作:
    docker exec -it mySQLContainer bash
    mysql -uroot -proot
    ALTER USER 'root'@'%' IDENTIFIED BY 'root';
    FLUSH PRIVILEGES;
    exit
    
  • 脚本中明文写密码存在安全风险,测试场景可临时使用,生产环境建议改用MySQL配置文件或环境变量传递密码

内容的提问来源于stack exchange,提问作者Aditya Prakash

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 20:15:18