欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Docker6

程序员文章站 2022-03-12 12:17:42
...

Docker高阶使用

容器数据卷

在我们使用docker时我们的数据不应该存在容器中

MySQL为例,容器删了,数据库还留着

产生了一个需求,容器之间的数据共享技术

卷技术(目录挂载)将容器内的目录,挂载到linux

#卷挂载
sudo docker run -it -v 主机目录:容器内目录 
#查看容器详情信息,看卷挂载是否成功了
sudo docker inspect id

卷挂载成功后进行测试,从容器内创建文件,容器外进入挂载目录,可以查看到创建的文件,在容器外修改,容器内也被修改

注意!挂载目录是同步,而不是同一个文件,这意味着,数据的双份存储

练习MySQL

#首先拉取镜像,这里使用mysql5.7
sudo docker pull mysql:5.7
#运行容器,做数据挂载
sudo docker run -d -p 3310:3306 \ 			#后台启动并映射端口
-v /home/mysql5.7/conf:/etc/mysql/conf.d \ 	#将conf.d挂载到主机上
-v /home/mysql5.7/data:/var/lib/mysql  \ 	#将数据库挂载到主机上
-e MYSQL_ROOT_PASSWORD=123123 \ 			#设置root用户密码
--name mysql01 mysql:5.7					#别名-镜像
#启动成功之后,使用mysql数据库工具连接我们的容器
#测试成功
#删除容器测试
sudo docker rm -f id
#查看主机目录,数据文件依然存在

匿名具名挂载测试

#匿名挂载
sudo docker run -d -P --name ng01 -v /etc/nginx nginx
#使用volume参数查看
sudo docker volume 参数
create   	#创建卷
inspect 	#查看一个卷
ls			#列表查看所有卷
prune		#删除没有使用的卷
rm			#删除一个或多个卷
#查看
$ sudo docker volume ls
DRIVER              VOLUME NAME
local               6fd729574455ff389d0ad03dc718021cd18333931ca7d037188f2a0dae16b1a6
local               09e5fcecbe8893172109feffe91fe050d63a326350e6e1a6a887566483b38e4f
#这些volume name很长的自动生成的这些都是匿名挂载的卷
#具名挂载
sudo docker run -d -P --name ng02 -v nginx02:/etc/nginx nginx
#查看参数
$ sudo docker volume ls
DRIVER              VOLUME NAME
local               34cfea4d2dcb02372418594b91fc594ad3c1b8d8389a317ddd1c3b1da6c459c7
local               b85ad861d79504e18faeb952d939dc6c30381d0643c2b26448c53c44c95c1923
local               nginx02
#可以看到我们指定的名字 卷名:容器内目录
#下面查看卷的具体信息,里面有卷的目录
sudo docker volume inspect nginx02
相关标签: Docker docker