如何在 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.