我是docker的初学者,而iam在mysql和node.js上工作,我以
运行mysql docker容器=ARRAYFORMULA(IFERROR(VLOOKUP($G$4:$G, Data!$A$2:$U,
IFS(H2="Bear", 2,
H2="Bwuce", 3,
H2="Calcifer", 4,
H2="Capt. Kwazy Sox", 5,
H2="Chooie", 6,
H2="Lil Fibbs", 7,
H2="Howl", 8,
H2="JC", 9,
H2="Jim Rat", 10,
H2="Milo Jr", 11,
H2="Sgt. Simba Sox", 12,
H2="Angel", 14,
H2="Fern", 15,
H2="Fuzznut", 16,
H2="Houdini", 17,
H2="Kami", 18,
H2="Mumma Bear", 19,
H2="Rosie J", 20,
H2="Sophie", 21), 0), ))
并且docker ps的结果显示mysql容器正在运行 和docker日志说
MySQL初始化过程完成。准备启动。
如何在工作台或应用程序中与此容器连接
答案 0 :(得分:1)
您需要公开端口
使用-p
或-P
-p绑定到自定义端口,-P将为您随机分配一个端口。
:latest
不需要添加,docker会帮助您添加。
最终命令应如下所示:
docker run -dit -P --name docker-mysql -e MYSQL_ROOT_PASSWORD=abc123 mysql:latest
然后使用xx查看暴露的端口:
docker port docker-mysql
检查机器的哪个端口映射到容器的3306端口,我的结果是:
33060/tcp -> 0.0.0.0:32818
3306/tcp -> 0.0.0.0:32819
现在您可以通过软件或代码连接到此端口。
答案 1 :(得分:1)
尝试一下:
docker run -p 3306:3306 --name docker-mysql -e MYSQL_ROOT_PASSWORD=abc123 -d mysql:latest
这会将您本地计算机上的端口3306绑定到docker映像。您应该能够使用用户名root
和密码abc123
使用本地主机和端口3306连接到数据库。
我刚刚对其进行了测试,它的工作原理就像是一种魅力。
如果您正在为错误而苦苦挣扎:
无法通过33016连接到本地主机”详细信息=身份验证 无法加载插件“ caching_sha2_password”: dlopen(/usr/local/mysql/lib/plugin/caching_sha2_password.so,2):图片 找不到
更新您的MySQL工作台。
如果这样不起作用,则需要向根用户添加native password
。方法如下:
通过bash连接到您的docker映像:
docker exec -it docker-mysql bash
以root用户身份登录mysql
mysql --user = root --password
输入root的密码(默认为'root',但在此示例中为'abc123')
最终运行:
使用mysql_native_password通过'abc123'标识ALTER USER'root';
答案 2 :(得分:0)
对于开发而言,最好的方法是将容器连接到“主机”网络
docker run --name docker-mysql --network host -e MYSQL_ROOT_PASSWORD=abc123 -d mysql:latest
当您转移到暂存/产品环境时,请考虑使用一些业务流程解决方案。
答案 3 :(得分:0)
运行docker inspect container_id,它将显示容器端口,但不显示主机端口绑定。默认情况下,不带-p标志运行它将为容器分配端口,但不会公开主机端口,因此,为达到此目的,请在docker run命令中大声尝试-p标志-p 3306:3306。