https://hub.docker.com/_/mysql/
一、下载官方的mysql镜像
- 1
- 1
下载完成后查看镜像:
- 1
- 2
- 3
- 1
- 2
- 3
二、生成容器
我在第一次生成容器时使用之前生成容器的方法,生成的容器运行后会马上退出。
- 1
- 2
- 3
- 4
- 5
- 1
- 2
- 3
- 4
- 5
查看logs
- 1
- 2
- 3
- 4
- 1
- 2
- 3
- 4
提示说是因为没有使用参数MYSQL_ROOT_PASSWORD
但是除了这个参数还有没有其他参数呢?想到这里,我看到生成容器时,调用的启动脚本是/entrypoint.sh,我想应该查一下这个脚本的内容确定一下。
但是这个容器无法启动,根本就没法查看,那只能是新生成一个查看/entrypoint.sh脚本的容器了:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
- 82
- 83
- 84
- 85
- 86
- 87
- 88
- 89
- 90
- 91
- 92
- 93
- 94
- 95
- 96
- 97
- 98
- 99
- 100
- 101
- 102
- 103
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
- 82
- 83
- 84
- 85
- 86
- 87
- 88
- 89
- 90
- 91
- 92
- 93
- 94
- 95
- 96
- 97
- 98
- 99
- 100
- 101
- 102
- 103
通过查看/entrypoint.sh脚本内容,总结参数如下
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
使用上要的参数生成新的容器:
- 1
- 2
- 1
- 2
命令详解:
1、设置容器的mysql的root密码为”147258”;
2、新添加一个名为“steven”的用户,密码设置为“147258”;
3、在生成容器的同时新建一个名为“discuz”的数据库;
4、将宿主机的目录“/mysql_data”映射到容器的“/var/lib/mysql”目录。这是因为默认情况下数据库的数据库文件和日志文件都会存放于容器的AUFS文件层,这不仅不使得容器变得越来越臃肿,不便于迁移、备份等管理,而且数据库的性能也会受到影响。因此建议挂载到宿主机的目录到容器内。
查看新生成的容器:
- 1
- 2
- 3
- 4
- 5
- 1
- 2
- 3
- 4
- 5
容器的3306端口已经映射给了宿主机的32792端口。如果需要将容器的3306端口开放给指定的宿主机端口,请使用参数 “-p 宿主机端口:3306”。
查看本地的mysql_data是否生成容器内的数据库:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
已经生成相关的文件和默认数据库,同时也新建了”disucz”数据库.
测试:在宿主机上通过端口访问容器中的mysql服务:
安装 mysql
- 1
- 1
测试:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
测试成功!
需要注意的是:宿主机上的UID和GID是999。这是容器里用户mysql的UID和GID。千万另进行权限变更,否则容器对这个目录进行读写就会出现问题。如果觉得不舒服,可以在本地新建一个mysql_docker的用户指定UID和GID是999。
三、进入到新生成的容器
由于官方的镜像没有提供sshd服务,所以可以选择在生成容器之前先自行安装sshd服务,重新生成镜像,然后再生成容器。这部分在之前的文章里提过,所以就不多说了。
另一种方法是使用exec命令直接进入到容器内部
查看生成的容器ID
- 1
- 2
- 3
- 1
- 2
- 3
使用exec进入容器,同时进行相关操作:
- 1
- 1
查看进程:
- 1
- 2
- 3
- 4
- 5
- 1
- 2
- 3
- 4
- 5
查看数据库所在的文件夹:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
进入mysql:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
四、修改容器中mysql的配置文件
默认镜像中并没有安装vi或者vim,需要手工安装。
- 1
- 1
然后就可以使用vim 来修改mysql的配置文件:
- 1
- 1
如果已经有一个比较成熟的my.cnf的配置方案,可以在宿主机上新建一个文件夹将已经设置好的my.cnf和conf.d这二个文件放到里面,在新建窗口的时候,直接使用参数”-v” 将这个文件夹映射到容器的”/etc/mysql”目录上即可。