Docker学习02—狂神说
容器数据卷
什么是容器数据卷
容器之间可以有一个数据共享的技术!Docker 容器中产生的数据,同步到本地!
这就是卷技术!目录的挂载,将我们容器内的目录,挂载到Linux上面
总结一句话:容器的持久化和同步操作!容器间也是可以数据共享的!
使用数据卷
[root@docker01 ~]# docker run -it -v /home/ceshi:/home/ --name Centos01 centos
[root@docker01 ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
ceacb503627e centos "/bin/bash" 15 seconds ago Up 13 seconds Centos01
9ecabbcd7092 tomcat "catalina.sh run" 20 minutes ago Up 20 minutes 0.0.0.0:8080->8080/tcp tomcat01
d64486213e0d portainer/portainer "/portainer" About an hour ago Up About an hour 0.0.0.0:8088->9000/tcp exciting_swirles
d0ba2c986d32 nginx "/docker-entrypoint.…" 7 hours ago Up 7 hours 0.0.0.0:8000->80/tcp nginx01
[root@ceacb503627e /]# cd /home/
[root@ceacb503627e home]# ls
[root@ceacb503627e home]# touch wangyi.txt
[root@ceacb503627e home]# read escape sequence
[root@docker01 ~]# ll /home/ceshi/
total 0
-rw-r--r--. 1 root root 0 Jul 19 18:04 wangyi.txt
[root@docker01 ~]# docker inspect ceacb503627e
......
"Mounts": [
{
"Type": "bind",
"Source": "/home/ceshi",
"Destination": "/home",
"Mode": "",
"RW": true,
"Propagation": "rprivate"
}
.....
具名和匿名挂载
匿名挂载
-v 容器内路径!
docker run -d -P --name nginx01 -v /etc/nginx nginx
查看所有的volume的情况
[root@docker01 ~]# docker volume ls
DRIVER VOLUME NAME
local 33ae588fae6d34f511a769948f0d3d123c9d45c442ac7728cb85599c2657e50d
这里发现,这种就是匿名挂载,我们在 -v只写了容器内的路径,没有写容器外的路径!
具名挂载
[root@docker01 ~]# docker run -d -P --name nginx02 -v juming-nginx:/etc/nginx nginx
[root@docker01 ~]# docker volume ls
DRIVER VOLUME NAME
local juming-nginx
通过 -v 卷名:容器内路径
查看一下这个卷
所有的docker容器内的卷,没有指定目录的情况下都是在/var/lib/docker/volumes/xxxx/_data下
如果指定了目录,docker volume ls是查看不到的
三种挂载: 匿名挂载、具名挂载、指定路径挂载
-v 容器内路径 #匿名挂载
-v 卷名:容器内路径 #具名挂载
-v /宿主机路径:容器内路径 #指定路径挂载 docker volume ls 是查看不到的
拓展:
通过 -v 容器内路径: ro rw 改变读写权限
ro #readonly 只读
rw #read write 可读可写
docker run -d -P --name nginx05 -v juming:/etc/nginx:ro nginx
docker run -d -P --name nginx05 -v juming:/etc/nginx:rw nginx
ro 只要看到ro就说明这个路径只能通过宿主机来操作,容器内部是无法操作!
初始Dockerfile
Dockerfile 就是用来构建docker镜像的构建文件!命令脚本!先体验一下!
通过这个脚本可以生成镜像,镜像
创建一个dockerfile文件,名字可以随便 建议Dockerfile
文件中的内容 指令(大写) 参数
FROM centos
VOLUME ["volume01","volume02"]
CMD echo "----end----"
CMD /bin/bash
#这里的每个命令,就是镜像的一层!
Docker网络