docker-mysql

107 阅读1分钟

mysql容器启动步骤

<p>dockerhubMySQL镜像
docker search mysql --limit 10

<p>dockerhub拉取镜像
docker pull mysql:8.0.31

<p>确认没有其他容器运行占用端口3306

<p>运行mysql容器
docker run -e MYSQL_ROOT_PASSWORD=root -dp 3306:3306 --name mysql-master -v /var/folders/docker-mysql-master/data:/var/lib/mysql -v /var/folders/docker-mysql-master/log:/var/log/mysql -v /var/folders/docker-mysql-master/conf:/etc/mysql/conf.d:rw mysql:8.0.31
1 -e 环境设置,设置密码为root
2 -d 后台守护线程启动
3 --restart=always docker启动时mysql自启动
4 -v 设置数据卷,宿主机路径:容器内路径
-4.1 宿主机是绝对路径:会将容器路径内的内容全部清空,以宿主机为主
-4.2 宿主机的路径是别名aaa:别名路径内不存在内容,则保留容器路径原始内容,数据存储路径:var/lib/docker/volumes/aaa
-4.3 当前以绝对路径设置数据卷,但路径内没有内容,会保留容器路径的原始内容
-4.4 容器内数据存储的路径,dockerhub mysql容器中有记录

<p>查看启动的容器进程
docker ps

<p>查看日志
docker logs -f container_id
1 -f:显示实时日志

<p>进入容器
docker exec -it container_id bashbash组件进行it交互

<p>登陆mysql
mysql -u root -p

<p>数据可视化工具连接
localhost:3306

<p>停止容器
docker stop container_id

<p>查找已经停止的容器
docker ps -a

<p>重启容器
docker restart container_id

mysql数据库备份为sql文件

<p>导出全部数据
docker exec container_id sh -c 'exec mysqldump --all-databases -uroot -p"$MYSQL_ROOT_PASSWORD"' > /root/all-databases.sql
1 使用mysqldump指令进行数据备份
2 sh:进入容器以脚本方式交互
3 -c '':脚本参数
4 >:数据备份到宿主机路径下的文件

<p>导出指定数据库的数据
docker exec container_id sh -c 'exec mysqldump --databases hi_mysql -uroot -p"$MYSQL_ROOT_PASSWORD"' > /root/hi_mysql.sql
1 --databases hi_mysql:到处hi_mysql这个数据库的数据

<p>导出指定数据库的库表结构没有数据
docker exec container_id sh -c 'exec mysqldump --no-data --databases hi_mysql -uroot -p"$MYSQL_ROOT_PASSWORD"' > /root/hi_mysql_nodata.sql
1 --databases hi_mysql:到处hi_mysql这个数据库的数据
2 --no-data:不导出数据

<p>执行sql文件到mysql中
docker exec -i container_id sh -c 'exec mysql -uroot -p"$MYSQL_ROOT_PASSWORD"' < /root/hi_mysql_nodata.sql