docker 创建MySQL
使用docker创建mysql5.6.50
docker run \
--restart=always \ #这个参数是mysql在docker启动的时候,也会跟着自动启动
--name mysql8.0 \ #这个参数是mysql容器的名字
-p 3306:3306 \ #这个参数是端口号映射
-e MYSQL_ROOT_PASSWORD=root \ #这个参数是是设置用户名为root 密码为root
-v /root/mysql/data:/var/lib/mysql \ #将mysql的数据文件挂载到宿主机指定位置。不挂载docker也会通过数据卷挂载至宿主机,但是其挂载的目录便不方便查找查看
-v /root/mysql/init:/docker-entrypoint-initdb.d \ #将mysql初始化目录挂载至宿主机。当容器第一次启动的时候,将运行其下的.sh , .sql , .sql.gz等文件,这可用于进行大量数据库迁移时使用,能将所有数据库sql脚本一并运行,无需一个个导入。当然,这个方法一定要确保sql文件没有错误,不然mysql容器将无法初始化成功。同时,这个只能是run命令第一次启动有效。stop容器再start,新添入的sql是不会被执行的。
-v /root/mysql/conf:/etc/mysql/conf.d \ #主要将mysql的配置文件挂载到宿主机,便于操作自定义配置文件
-e TZ=Asia/Shanghai \ #设置时区
-d mysql:8.0.22 #-d参数是后台运行
注:
- 如果外部的挂载文件是空的,会覆盖内部的挂载文件导致docker内部的文件路径紊乱。所以要注意不要使用空的文件夹挂载内部有文件的文件夹。
- 根据注意事项1的提示。如果要把docker内部的mysql配置文件挂载到外部,需要在外部新建一个准确的配置文件再次进行挂载。
- mysql5.6.50的内部配置文件路径为/etc/mysql/mysql.conf.d/mysqld.cnf。在新建数据库之前,先创建一个简单的mysql docker,把配置文件cp出来后在进行配置文件的挂载,保证文件目录准确。
宿主机器和docker之间copy文件
从容器ID为45af44fe669a的/usr/share/nginx/html复制到宿主机器的/root路径下
docker container cp -a 45af44fe669a:/usr/share/nginx/html /root
// 把宿主机器的/root/build/下的所有内容复制到容器ID为45af44fe669a的/usr/share/nginx/html路径下
docker cp /root/build/. 45af44fe669a:/usr/share/nginx/html/