提问人:claws 提问时间:11/17/2023 最后编辑:claws 更新时间:11/17/2023 访问量:51
如何在容器中运行服务器并运行cli客户端以使用“docker run”连接它?
How to run server in container and run a cli client to connect it using `docker run`?
问:
如何在 docker 中运行服务器(mysql 或 redis)并在其中运行 cli 客户端以连接自身。
docker run -it --rm \
--name mysql-container \
-e MYSQL_ROOT_PASSWORD=mypassword \
-p 3307:3306 \
mysql \
mysql -u root -h localhost -P 3306 -p
给出错误:
错误 2002 (HY000):无法通过套接字“/var/run/mysqld/mysqld.sock”连接到本地 MySQL 服务器 (2)
docker run -it --rm \
--name my-redis \
redis \
redis-cli -h localhost
给出错误
无法在 127.0.0.1:6379 连接到 Redis:连接被拒绝
我是docker的新手。我假设它应该运行服务器,然后运行我的客户端命令。但它不起作用。
我错过了什么?
答:
1赞
quoc9x
11/17/2023
#1
实际上,在执行登录命令之前,您需要等待 和 在 中完成启动。启动时间取决于许多因素。为了安全起见,我认为您应该在命令之间添加。mysql-server
redis-server
container
sleep
你可以试试这个:
- 对于MySQL
docker run -d --rm \
--name mysql-container \
-e MYSQL_ROOT_PASSWORD=mypassword \
-p 3307:3306 \
mysql && sleep 5 && \
docker exec -it mysql-container \
bash -c "mysql -u root -h localhost -P 3306 -p"
- 对于 Redis 也是如此
docker run -d --rm \
--name my-redis \
redis && sleep 5 && \
docker exec -it my-redis \
redis-cli -h localhost
评论
0赞
claws
11/17/2023
谢谢。我已经在这样做了,我想知道为什么我的命令不起作用。
0赞
quoc9x
11/17/2023
哦,是的,我已经为答案添加了解释。
评论
docker run -p 3307:3306
mysql -h 127.0.0.1 -P 3307 ...