运行docker mysql容器并用一个命令打开它

运行docker mysql容器并用一个命令打开它,mysql,docker,Mysql,Docker,我想用一个命令在docker中运行并打开mysql Cli。像这样的事情是行不通的: docker run --rm -it -p 33060:3306 --name mydb -e MYSQL_ROOT_PASSWORD=secret mysql mysql -p 我知道这样运行容器后可以连接到mysql docker -it docker exec -it mydb mysql -p 但我想一次完成 谢谢 (更新)***** 在第8版中,您似乎可以在命令结束时调用MySQLsh来实现这一

我想用一个命令在docker中运行并打开mysql Cli。像这样的事情是行不通的:

docker run --rm -it -p 33060:3306 --name mydb -e MYSQL_ROOT_PASSWORD=secret mysql mysql -p
我知道这样运行容器后可以连接到mysql

docker -it docker exec -it mydb mysql -p
但我想一次完成

谢谢

(更新)*****

在第8版中,您似乎可以在命令结束时调用MySQLsh来实现这一点。但无法对以前的版本执行此操作

docker run --name=mk-mysql -p3306:3306 -e MYSQL_ROOT_PASSWORD=my-secret-pw -it mysql/mysql-server:8.0.20 mysqlsh 

数据库服务器和客户端是两个独立的程序。一个容器只运行一个程序,因此不能在同一个容器中同时运行服务器和客户端,两者都作为主进程。您可以编写一个脚本来启动容器,然后运行
mysql
连接到它,但这是您所能做的最好的了

#/垃圾箱/垃圾箱
docker run-d-p33060:3306——名称mydb-e MYSQL\u ROOT\u PASSWORD=secret MYSQL
exec mysql--host=127.0.0.1--port=33060--connect timeout=60--wait--password
如果您试图这样做以创建数据库或进行其他首次初始化,则可以将装载初始化脚本绑定到
/docker entrypoint initdb.d
中,并将其作为数据库设置的一部分运行(仅在数据库第一次启动时)

#为数据库创建存储
#(删除并重新创建以重新运行初始化脚本)
docker卷创建mysql数据
码头工人赛跑\
-v mysql数据:/var/lib/mysql\
-v$PWD/init.sql:/docker-entrypoint-initdb.d/init.sql\
... \
mysql

如果您只是尝试使用SQL命令,像SQLite这样的无服务器数据库可能更适合您的需要。

-p参数用于要发布的端口,不应是
-it
交互的一部分,这应该是您的错误

阅读docker文档中的
docker run
命令,

您可以使用版本8来实现这一点:“docker run--name=mk mysql-p3306:3306-e mysql\u ROOT\u PASSWORD=my secret pw-it mysql/mysql server:8.0.20 mysqlsh”可以使用版本8,但无法使用版本5.7调用cli。(见最新问题)