Docker是一种新兴的虚拟化技术,能够一定程度上的代替传统虚拟机。下图是容器跟虚拟机的对比
我们也可以在docker hub上注册个账号,构建自己的镜像放到hub上,以便复用
总结下使用docker搭建mysql实例的过程
查看linux版本可以通过下面命令进行查看
# cat /proc/version
Linux version 4.19.128-microsoft-standard (oe-user@oe-host) (gcc version 8.2.0 (GCC)) #1 SMP Tue Jun 23 12:58:10 UTC 2020
安装mysql,可以通过search命令查看仓库的mysql的各个版本
docker search mysql
通过pull命令进行拉去镜像操作,默认拉去的是latest版本,可以通过冒号来下载指定版本,如想下载5.7的mysql
docker pull mysql:5.7
现在下来后可以通过 docker images 命令查看下载的镜像
想运行mysql,把它放到容器里面运行下就ok(貌似说的不咋合理)
运行直线需要做一些配置,比如数据库data的存放位置,以及自定义的一些配置,比如mysql默认是区分大小写的
我是在当前的用户下面进行操作的,如下
创建一个data文件夹用于存放mysql的表结构,数据等信息 d:\docker\mysql\db
创建一个my.ini文件来进行自定义参数设置, d:\docker\mysql 内容如下
[mysqld]
user=mysql
sql_mode=STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
lower_case_table_names=1
event_scheduler=ON
default-time-zone = '+8:00'
event_scheduler=ON 表示开启事件支持
lower_case_table_names=1 表示数据库不区分大小写
default-time-zone = '+8:00' 表示使用中国时区
ok,准备就绪,启动就准备好了。
具体命令
docker run -itd -p 3006:3306 -e MYSQL_ROOT_PASSWORD=123456 --name cmysql -v /docker/mysql/my.ini:/etc/mysql/my.ini -v /docker/mysql/db:/var/lib/mysql mysql:5.7
各个参数说明
- run:运行一个容器
- -d:看做做守护线程(Daemon)
- -p:进行端口映射,用于暴露给外界让其访问 ,其中第一个是映射到主机的端口,:后的是docker上的端口,这个要注意些。
- -e:初始化root用户的密码
- --restar=always:自动重启,比如服务器突然断电,重启服务器之后不需要你重新手动启动
- --name:自定义容器名称
- -v:挂载。容器里面的数据你是不能直接访问的,但是你可以将可见目录挂载上去,这样就可以访问了(解释的不咋到位)
启动成功之后会出现一个随机字符串,表示容器的id
可以通过docker ps查看,我是启动了两个。docker ps -a 查看所有容器
启动之后,由于进行了端口映射,可以通过客户端工具入sqlyog,Navicat都可以进行连接
如果想进入容器进行操作,可以通过如下命令
要想退出使用exit,快捷键Ctrl+d
删除容器可以通过
docker rm cmysql
当然了,前提是容器需要关闭,关闭的命令
docker stop cmysql
一样的道理,删除镜像也需要前提条件,那就是被依赖的容器删除了才能进行删除镜像
docker rmi <image id>
ok 这样你就可以正常的使用MySQL了。
docker 下运行 postgresql 的命令
docker run --name pgdata -p 5432:5432 -e POSTGRES_PASSWORD=123456 -v /docker/postgresql10:/var/lib/postgresql/data -d postgres:10.10