上海做网站的知名企业,网站建设发专业人才培养方案,做英文网站 赚钱,iis7发布php网站容器数据卷技术
它是一种将容器中的数据持久化到linux宿主机的技术。
# 1. 使用命令挂载 -v
docker run -it -v 主机目录:容器目录# 将容器centos 的home目录挂载到linux的用户docker_study/centos_home目录下面
[rootizbp1imy docker_study]# docker run -it -v /usr/e…容器数据卷技术
它是一种将容器中的数据持久化到linux宿主机的技术。
# 1. 使用命令挂载 -v
docker run -it -v 主机目录:容器目录# 将容器centos 的home目录挂载到linux的用户docker_study/centos_home目录下面
[rootizbp1imy docker_study]# docker run -it -v /usr/echo_lovely/docker_study/centos_home:/home 0d120b6ccaa8 /bin/bash
[root09670c4a0836 /]## 2. 查看挂载信息~
docker inspect 被挂载的容器id# 3. 在容器的home目录创建文件, 文件同步
[root09670c4a0836 home]# touch demo.java
[root09670c4a0836 home]# ls
demo.java
[root09670c4a0836 home]## 4. 查看宿主机上的文件[rootizbp1imy centos_home]# ls
demo.java# 5. 在宿主机上修改demo.java 双向绑定
[rootizbp1imy centos_home]# vim demo.java
[rootizbp1imy centos_home]# ls
demo.java
[rootizbp1imy centos_home]# cat demo.java
/**author echo_lovey**date 2020/11/24 11:05**/public class demo {public static void main(Stirng[] args) {System.out.println(hello world ~);}}
# 上面在宿主机上修改并查看了文件# 6. 进入容器在容器中查看对应的文件
[rootizbp1imy centos_home]# ls
demo.java
[rootizbp1imy centos_home]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
09670c4a0836 0d120b6ccaa8 /bin/bash 22 minutes ago Up 8 minutes eloquent_thompson
[rootizbp1imy centos_home]# docker attach 09670c4a0836
[root09670c4a0836 /]# ls
bin dev etc home lib lib64 lostfound media mnt opt proc root run sbin srv sys tmp usr var
[root09670c4a0836 /]# cd /home
[root09670c4a0836 home]# ls
demo.java
[root09670c4a0836 home]# cat demo.java
/**author echo_lovey**date 2020/11/24 11:05**/public class demo {public static void main(Stirng[] args) {System.out.println(hello world ~);}}
[root09670c4a0836 home]## 上面可以看到被挂载的容器目录和挂载到linux上指定目录。
# 其中一个改变另外一个会同步!挂载mysql
容器容易被删需要将数据挂载到本地
1. 获取mysql镜像
docker pull mysql:5.72. 进行数据挂载~ 配置密码~ docker hub 可以挂载数据和配置文件同时挂载多个。# 官方的使用 设置密码docker run --name some-mysql -e MYSQL_ROOT_PASSWORDmy-secret-pw -d mysql:tag# 设置端口 挂载了容器中的mysql 到data, 配置文件到conf目录。 并设置了密码~
[rootizbp1imy docker_study]# docker run -d -p 3310:3306 -v /usr/echo_lovely/docker_study/mysql/data:/var/lib/mysql -v /usr/echo_lovely/docker_study/mysql/conf:/etc/mysql/conf.d --name mysql01 -e MYSQL_ROOT_PASSWORD123456 mysql:5.7
421381366f7f7b90e2b332e82321e5e3b69263b3651b3ad0de31f6eb95b916f9
[rootizbp1imy docker_study]# # 外部使用sqlyog测试连接到容器中的数据库成功创建数据库。 查看linux中的数据库[rootizbp1imy docker_study]# cd mysql
[rootizbp1imy mysql]# ls
conf data
[rootizbp1imy mysql]# cd data
[rootizbp1imy data]# ls
auto.cnf ca-key.pem client-cert.pem ib_buffer_pool ib_logfile0 ibtmp1 performance_schema public_key.pem server-key.pem
bitqian_db ca.pem client-key.pem ibdata1 ib_logfile1 mysql private_key.pem server-cert.pem sys具名和匿名挂载
# 匿名-v 后面只指定被挂载的目录
匿名 docker run -d -P -v /etc/nginx/conf.d nginx# 具名 指定名称, 带有目录和不带目录
# -v nginx_volume:/etc/jjj
# -v /home/dir:/etc/jjj # 好像不被放到挂载信息里面# 1. 不指定目录的具名挂载centos
docker run -d --name centos01 -P -v centos01:/home centos# 查看挂载的卷
docker volume ls# 1.1. 查看centos1 被挂载的卷的信息
[rootizbp1imy home]# docker volume inspect centos01
[{CreatedAt: 2020-11-24T14:57:3208:00,Driver: local,Labels: null,Mountpoint: /var/lib/docker/volumes/centos01/_data,Name: centos01,Options: null,Scope: local}
]# volume info ~
DRIVER VOLUME NAME
local centos01# 被挂载的卷在/var/lib/docker/volumes/这个目录# 2. 指定目录的挂载 挂载信息未被记录~
docker run -d -p 81:80 -v /usr/echo_lovely/docker_study/nginx:/etc/nginx/ --name nginx01 nginx# 3. 匿名挂载 有挂载信息~
docker run -d -P --name nginx02 -v /etc/nginx nginx# volume info ~
DRIVER VOLUME NAME
local 1d4cbe2f068c0f318b9057bbec374546a69c683f2637540ba05d4c2d12c69a42# 给被挂载的文件夹同时赋予 读写权限
# 只读 read only
docker run -d -P --name nginx02 -v /etc/nginx:ro nginx
# 读写都可 read write
docker run -d -P --name nginx02 -v /etc/nginx:rw nginx容器的持久化和同步操作。容器之间也是可以数据共享的。