360docker是什么文件夹(360desktop是什么文件夹)

容器数据卷什么是容器数据卷?

比如你创建了一个 MySQL 的容器,在里面新建数据库、表、数据,之后你想迁移数据或者升级数据库。直接把容器 MySQL 容器删除,里面的数据也会跟着被删除,这时候如果可以把数据和容器分离,单独挂载一个数据卷,那么就能会好的应对这类问题。

使用数据卷

方式一: -v 宿主机路径:容器路径

[root@localhost ~]# docker run -d -v /test:/usr/local/tomcat/webapps --name mytomcat -p 8080:8080 a33700929548[root@localhost ~]#docker exec -it 3f18bc983 /bin/bashroot@3f18bc9835da:/usr/local/tomcat# cd webappsroot@3f18bc9835da:/usr/local/tomcat/webapps# ls此时webapps目录下没有任何东西。切换到linxu宿主机[root@localhost webapps]# cd /home/webapps[root@localhost webapps]# touch test.java此时容器webapps目录下也会有test.java,也就是说容器中webapps目录实际是指向linxu宿主机/home/webapps实战 MySQL 数据卷挂载

[root@localhost ~]# docker run -d -p 3306:3306 -v /test/mysql:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --name mysql01 7aacec936dc9具名挂载和匿名挂载

[root@localhost ~]# docker run -d --name mynginx -P -v /etc/nginx nginx 匿名挂载:只给出容器内路径[root@localhost ~]# docker volume ls查看所有匿名volumelocal e239204ac9b6687102879dbc1290269ed198a34f80d5f39e4483f9dc713d4cff[root@localhost ~]# docker run -d --name mynginx -P -v nginx_volume:/etc/nginx nginx 具名挂载:给出名字,不能在前面加/,加了就表示绝对路径。[root@localhost ~]# docker volume lslocal nginx_volume[root@localhost ~]# docker volume inspect nginx_volume查看数据卷信息[ { "CreatedAt": "2021-01-14T01:20:44+08:00", "Driver": "local", "Labels": null, "Mountpoint": "/var/lib/docker/volumes/nginx_volume/_data", "Name": "nginx_volume", "Options": null, "Scope": "local" }]其中/var/lib/docker/volumes就是所有数据卷在宿主机中的目录。挂载方式总结

-v 容器内路径 匿名挂载

-v 卷名:容器内路径 具名挂载

-v /宿主机路径:容器路径 指定路径挂载

ro 和 rw

ro readOnly #只读rw readWrite#可读可写docker run -d --name mynginx -P -v nginx_volume:/etc/nginx:ro nginxdocker run -d --name mynginx -P -v nginx_volume:/etc/nginx:rw nginx# ro 路径只能通过宿主机操作,不能从容器内容操作。 使用 Dockerfile 挂载卷

dockerfile 是啥?dockerfile 用来构建 docker 镜像的文件。

1、编写 dockerfile 文件

FROM cetnosVOLUME ["volume01","volume02"]CMD echo ".....end....."CMD /bin/bash2、通过 dockerfile 构建镜像

[root@localhost home]# docker build -f /home/dockerfile01 -t lj_centos .Sending build context to Docker daemon 121MBStep 1/4 : FROM centos ---> 300e315adb2fStep 2/4 : VOLUME ["volume01","volume02"] ---> Running in 625283035ed5Removing intermediate container 625283035ed5 ---> e0dfe5f28b8dStep 3/4 : CMD echo ".....end....." ---> Running in 9e46f4c22a0dRemoving intermediate container 9e46f4c22a0d ---> 52f777986e57Step 4/4 : CMD /bin/bash ---> Running in c4529bbb2dbfRemoving intermediate container c4529bbb2dbf ---> 95917d694396Successfully built 95917d694396Successfully tagged lj_centos:latest#查看镜像[root@localhost home]# docker images REPOSITORY TAG IMAGE ID CREATED SIZElj_centos latest 95917d694396 12 seconds ago 209MB3、通过新镜像运行容器

[root@localhost home]# docker run -it lj_centos /bin/bash[root@3cf8b26d06cd /]# ls -l total 0lrwxrwxrwx. 1 root root 7 Nov 3 15:22 bin -> usr/bindrwxr-xr-x. 5 root root 360 Jan 15 14:31 devdrwxr-xr-x. 1 root root 66 Jan 15 14:31 etcdrwxr-xr-x. 2 root root 6 Nov 3 15:22 homelrwxrwxrwx. 1 root root 7 Nov 3 15:22 lib -> usr/liblrwxrwxrwx. 1 root root 9 Nov 3 15:22 lib64 -> usr/lib64drwx------. 2 root root 6 Dec 4 17:37 lost+founddrwxr-xr-x. 2 root root 6 Nov 3 15:22 mediadrwxr-xr-x. 2 root root 6 Nov 3 15:22 mntdrwxr-xr-x. 2 root root 6 Nov 3 15:22 optdr-xr-xr-x. 146 root root 0 Jan 15 14:31 procdr-xr-x---. 2 root root 162 Dec 4 17:37 rootdrwxr-xr-x. 11 root root 163 Dec 4 17:37 runlrwxrwxrwx. 1 root root 8 Nov 3 15:22 sbin -> usr/sbindrwxr-xr-x. 2 root root 6 Nov 3 15:22 srvdr-xr-xr-x. 13 root root 0 Jan 15 14:05 sysdrwxrwxrwt. 7 root root 145 Dec 4 17:37 tmpdrwxr-xr-x. 12 root root 144 Dec 4 17:37 usrdrwxr-xr-x. 20 root root 262 Dec 4 17:37 vardrwxr-xr-x. 2 root root 6 Jan 15 14:31 volume01drwxr-xr-x. 2 root root 6 Jan 15 14:31 volume02容器之前共享数据卷

多个容器之间可以共享数据卷,类似于共享文件夹。共享的原理是双向拷贝,不会因为删除一个容器导致其他容器不能使用数据卷。

1. 先启动一个centos docker01[root@localhost ~]# docker run -it --name docker01 lj_centos2. 在启动一个centos docker02,并关联挂载卷[root@localhost ~]# docker run -it --name docker02 --volumes-from docker01 lj_centos3. 在其中一个容器的共享数据卷创建文件,观察另外一个4. 删除docker01容器查看docker02容器是否能运行