如何在 docker 中使用正确版本的 MySQL?
How to use the proper version of MySQL with docker?
我是 Docker 的初学者。也就是说,我注意到以下我认为有点奇怪的内容。
在控制台中执行了 docker pull mysql/mysql-server:5.6.23
之后,我玩了一下 Docker 和他的入门教程,我开始拉取 MySQL v5.6.23(不要问我为什么这么旧的版本)容器,我意识到欢迎消息显示的 MySQL:
版本错误
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.6.24 MySQL Community Server (GPL)
(...)
仍在使用 docker 命令,我发现了以下内容:
$ docker container inspect bde088053099
(...)
"Config": {
"Hostname": "bde088053099",
"Domainname": "",
"User": "",
"AttachStdin": false,
"AttachStdout": true,
"AttachStderr": true,
"ExposedPorts": {
"3306/tcp": {}
},
"Tty": false,
"OpenStdin": false,
"StdinOnce": false,
"Env": [
"MYSQL_ROOT_PASSWORD=root",
"PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
"PACKAGE_URL=https://repo.mysql.com/yum/mysql-5.6-community/docker/x86_64/mysql-community-server-minimal-5.6.24-2.el7.x86_64.rpm"
],
"Cmd": [
"mysqld"
],
"Image": "mysql/mysql-server:5.6.23",
"Volumes": {
"/var/lib/mysql": {}
},
"WorkingDir": "",
"Entrypoint": [
"/entrypoint.sh"
],
"OnBuild": null,
"Labels": {}
},
(...)
包 url 指向 MySQL 的下一个颠覆,而不是我的目标:
"PACKAGE_URL=https://repo.mysql.com/yum/mysql-5.6-community/docker/x86_64/mysql-community-server-minimal-5.6.24-2.el7.x86_64.rpm"
虽然图像名称包含正确的版本号 "Image": "mysql/mysql-server:5.6.23"
。
首先,是的,这个问题可以重现,但是 mysql/mysql-server:5.6.23, not mysql:5.6.23。您在post中的描述有冲突,请仔细检查。
Next,我认为oracle团队在5年前做5.6x
release时应该有build script
问题(例如5.6.24
也不行),因为其他版本没问题。
所以,如果你坚持要用5.6.23
,我建议你换成docker pull mysql:5.6.23
就可以了(注意:不是 docker pull mysql/mysql-server:5.6.23
):
$ docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -it mysql:5.6.23
mysql --version
mysql Ver 14.14 Distrib 5.6.23, for Linux (x86_64) using EditLine wrapper
最后,以上2个docker hub repo链接的区别:
都是官方镜像,只是mysql:5.6.23
基于debian,mysql/mysql-server:5.6.23
基于oracle linux.
我是 Docker 的初学者。也就是说,我注意到以下我认为有点奇怪的内容。
在控制台中执行了 docker pull mysql/mysql-server:5.6.23
之后,我玩了一下 Docker 和他的入门教程,我开始拉取 MySQL v5.6.23(不要问我为什么这么旧的版本)容器,我意识到欢迎消息显示的 MySQL:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.6.24 MySQL Community Server (GPL)
(...)
仍在使用 docker 命令,我发现了以下内容:
$ docker container inspect bde088053099
(...)
"Config": {
"Hostname": "bde088053099",
"Domainname": "",
"User": "",
"AttachStdin": false,
"AttachStdout": true,
"AttachStderr": true,
"ExposedPorts": {
"3306/tcp": {}
},
"Tty": false,
"OpenStdin": false,
"StdinOnce": false,
"Env": [
"MYSQL_ROOT_PASSWORD=root",
"PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
"PACKAGE_URL=https://repo.mysql.com/yum/mysql-5.6-community/docker/x86_64/mysql-community-server-minimal-5.6.24-2.el7.x86_64.rpm"
],
"Cmd": [
"mysqld"
],
"Image": "mysql/mysql-server:5.6.23",
"Volumes": {
"/var/lib/mysql": {}
},
"WorkingDir": "",
"Entrypoint": [
"/entrypoint.sh"
],
"OnBuild": null,
"Labels": {}
},
(...)
包 url 指向 MySQL 的下一个颠覆,而不是我的目标:
"PACKAGE_URL=https://repo.mysql.com/yum/mysql-5.6-community/docker/x86_64/mysql-community-server-minimal-5.6.24-2.el7.x86_64.rpm"
虽然图像名称包含正确的版本号 "Image": "mysql/mysql-server:5.6.23"
。
首先,是的,这个问题可以重现,但是 mysql/mysql-server:5.6.23, not mysql:5.6.23。您在post中的描述有冲突,请仔细检查。
Next,我认为oracle团队在5年前做5.6x
release时应该有build script
问题(例如5.6.24
也不行),因为其他版本没问题。
所以,如果你坚持要用5.6.23
,我建议你换成docker pull mysql:5.6.23
就可以了(注意:不是 docker pull mysql/mysql-server:5.6.23
):
$ docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -it mysql:5.6.23
mysql --version
mysql Ver 14.14 Distrib 5.6.23, for Linux (x86_64) using EditLine wrapper
最后,以上2个docker hub repo链接的区别:
都是官方镜像,只是mysql:5.6.23
基于debian,mysql/mysql-server:5.6.23
基于oracle linux.