参考:https://blog.csdn.net/smartdt/article/details/78126324

2.1.获取mysql镜像

        这里使用docker search命令在docker官方的镜像仓库中查找我们需要的mysql镜像。

docker search mysql

        下面就是查找的结果,截图没有截全。

docker_search.png

        我这里就选官方的mysql镜像,进行拉取:

docker pull mysql

        接下来,看一下镜像的详细信息:

mysql_detail.png

        上图我截取了一些比较重要的信息,可以看出暴露的端口是3306,还有一些环境变量,数据卷是/var/lib/mysql,端口与数据卷是启动容器时需要进行绑定的,端口用于远程访问,数据卷用于持久化数据。

2.2.启动容器

        在启动容器之前,我先创建一个数据卷来进行持久化,当然也可以直接-v进行指定,我这里就将数据卷交给docker进行管理:

docker volume create mysql

        查看创建的volume:

docker volume ls

        显示:

DRIVER        VOLUME NAME
local        mysql

        说明创建成功了,接下来启动容器:

docker container run -p 3306:3306 --mount source=mysql,destination=/var/lib/mysql -v /etc/localtime:/etc/localtime -e MYSQL_ROOT_PASSWORD=password --name mysql -d mysql

简要说明:
        1.docker container run:启动一个容器并运行。以前版本直接用docker run,后来我估计是为了更细分职责,docker添加了manager command,即docker container,docker image等等。这样符合了模块化的思想,职责更明确(个人想法,有错请各位大佬更正)。
        2.-p 3306:3306:宿主机的3306端口与容器的3306端口进行绑定。这样外部可以通过访问宿主机的3306端口进而访问到容器中的3306端口。
        3.--mount source=mysql,destination=/var/lib/mysql:数据卷进行绑定。source是指的上面我们在宿主机创建出来的volume,destination即我们要与容器中的哪个数据卷进行绑定。当然绑定数据卷还可以用-v 宿主机数据卷:容器数据卷进行绑定。
        4.-v /etc/localtime:/etc/localtime:设定容器的时间与宿主机保持一致。
        5.-e MYSQL_ROOT_PASSWORD=password:设置容器的环境变量。相当于在容器中export MYSQL_ROOT_PASSWORD=password的作用。
        6.--name mysql:设置容器的名称mysql。注意:容器名称是唯一的。
        7.-d:告诉容器在后台运行。
        8.mysql:告诉容器运行的镜像名为mysql。

2.3.设置远程访问

        刚起的mysql容器不具备远程连接的功能,需要我们进入容器中进行设置,首先我们先进入启动的mysql容器:

docker container exec -it mysql bash

        这时你会进入容器的终端界面,启动mysql的连接命令即可:

mysql -uroot -p

        这里的-p的值就是上面你创建容器时设置的环境变量MYSQL_ROOT_PASSWORD的值。由于我这里不想root对外,所以创建了一个用于开发使用的用户(这里把localhost改为%就能远程访问啦):

create user '[用户名称]'@'%' identified by '[用户密码]';
flush privileges;  --立即启用修改

然后测试一下:

mysql -h [localhost] -u[usrname] -p
mysql.png

远程连接成功!

文章来源于互联网:2.Docker部署mysql,并配置远程连接

发表评论