Docker数据存储
内容概览
一、Docker之卷标volume
Volume我们可以在dockerfile中指定,保证容器删除后数据不丢失。
1.运行mysql容器
docker run -d --name mysql1 -e MYSQL_ALLOW_EMPTY_PASSWORD=Yes mysql
2.查看docker本地卷标
docker volume ls
输出结果如下:
DRIVER | VOLUME NAME |
---|---|
local | bcece002b3eba18c8844f19920a621b0b0aab549f302b29a4451b70520a8eeb8 |
3.指定volumn位置
docker run -d -v mysql:/var/lib/mysql --name mysql2 -e MYSQL_ALLOW_EMPTY_PASSWORD=Yes mysql
4.进入mysql
docker exec -it mysql2 /bin/bash
mysql -u root
5.创建数据库
create database docker;
mysql> create database docker;
Query OK, 1 row affected (0.09 sec)
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| docker |
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+
5 rows in set (0.00 sec)
6.删除容器mysql2,新建容器mysql3并制定volume为mysql2的
docker run -d -v mysql:/var/lib/mysql --name mysql3 -e MYSQL_ALLOW_EMPTY_PASSWORD=Yes mysql
进入mysql3,查询数据库发现数据没有丢失:
docker exec -it mysql3 /bin/bash
mysql -u root
mysql> show databases;
二、Docker之Bind Mouting
docker run -d -v $(pwd):/usr/share/nginx/html -p 80:80 --name nginx-web zuohd/ngin
x-hello
主机当前目录将和docker容器的/usr/share/nginx/html
数据同步,利用此机制我们可以将我们的源码目录与服务器部署目录同步调试,减少了开发人员的工作量。