关键字:Docker|MySQL|容器

摘要:最近学习了一些关于Docker容器技术的内容,其中包括在Docker中创建一个MySQL实例,并把它运行起来作为测试数据库,下面把我记录的部分关键信息记录一下,作为备忘,也分享给大家作为参考。Docker安装的过程略过,我另外单独用一篇文章记录,这里假定事先在Windows 10下Docker已经安装完毕。

1.下载MySQL镜像

在Docker的官方网站上提供有MySQL的镜像可供直接下载使用,我们先打开网站,看看有哪些较常用的版本。

https://hub.docker.com/_/mysql?tab=tags
Docker站点的MySQL官方镜像页面
可看到有最新版或者8.0.18版,再往下拉,可看到还有常用的5.7.28版:
常用版本镜像5.7.28
并看到旁边有下载镜像包的命令如:

docker pull mysql:8.0.18

但我在管理员模式的Power Shell中执行上述命令时,发生下面的错误,并没有下载成功:

PS F:\> docker pull mysql:8.0.18
Error response from daemon: Get https://registry-1.docker.io/v2/: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)

在网上搜索找到答案,原因是官方下载地址在国内访问不太稳定,需要修改一下下载地址,改为另一个镜像地址,在Docker安装目录下找到“windows-daemon-options.json”文件,修改如下:
修改Docker运行配置文件
用内容:“registry-mirrors”: [“https://registry.docker-cn.com”,“http://hub-mirror.c.163.com”],替换原有行。
如果是Linux系统(如:Ubuntu)则修改或新增的文件名是: /etc/docker/daemon.json

 vi /etc/docker/daemon.json

修改完配置文件,重启Docker。然后再执行下载镜像的命令,就能正常完成下载。

PS F:\> docker pull mysql:8.0.18
8.0.18: Pulling from library/mysql
80369df48736: Pull complete                                                                                             e8f52315cb10: Pull complete                                                                                             cf2189b391fc: Pull complete                                                                                             cc98f645c682: Pull complete                                                                                             27a27ac83f74: Pull complete                                                                                             fa1f04453414: Pull complete                                                                                             d45bf7d22d33: Pull complete                                                                                             3dbac26e409c: Pull complete                                                                                             9017140fb8c1: Pull complete                                                                                             b76dda2673ae: Pull complete                                                                                             bea9eb46d12a: Pull complete                                                                                             e1f050a38d0f: Pull complete                                                                                             Digest: sha256:7345ce4ce6f0c1771d01fa333b8edb2c606ca59d385f69575f8e3e2ec6695eee
Status: Downloaded newer image for mysql:8.0.18

安装完成后,可运行查看镜像的命令看看是否已存在镜像:

PS F:\>docker images
REPOSITORY                 TAG                 IMAGE ID            CREATED             SIZE
mysql                      5.7.28              cd3ed0dfff7e        13 days ago         437MB
mysql                      8.0.18              c8ee894bd2bd        13 days ago         456MB

2.运行或创建MySQL容器

通过执行run命令,创建容器并运行,后再运行则用另一个命令,这个命令相当于是创建一个容器并立即运行它。

docker run -d --name mysql -p 3307:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7.28

大概解释一下上面的命令参数的意思,-d参数,表示启动后就在后台运行,–name mysql参数,表示给容器命名为“mysql”,-p 3307:3306参数,表示可根据需要修改映射到宿主机的端口为:3307,容器内MySQL的端口是默认的:3306,-e MYSQL_ROOT_PASSWORD=123456参数,表示设置root用户的密码为“123456”,mysql:5.7.28参数表示用这个版本的MySQL镜像来创建容器。

然后运行查看容器的命令:

PS F:\> docker ps -n 5
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                      PORTS                               NAMES
8d6cccbad3d0        mysql:5.7.28        "docker-entrypoint.s…"   3 hours ago         Up 3 hours                  33060/tcp, 0.0.0.0:3307->3306/tcp   mysql

通过上述步骤,MySQL镜像已下载并创建容器运行。后面再附几个容器的命令:
删除容器

docker rm 容器名称

停止所有容器

docker stop $(docker ps -aq)

停止指定容器

docker stop 容器ID/名称

启动容器

docker start -a 容器ID/容器名称

-a参数是显示标准输出,“相当于”前台启动,不带-a参数相当于后台启动。

感谢您耐心的阅读,本文若有不妥之处,请留下您宝贵的意见。

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐