Docker数据卷——>DockerFile——>Docker网络

本文详细介绍了Docker数据卷的使用,包括为何需要数据卷以及匿名和具名挂载的区别。接着讲解了DockerFile的用途,如何通过DockerFile创建数据卷容器,并给出了DockerFile构建过程的实战示例。最后,讨论了Docker网络,包括Docker0网络、--link选项以及自定义网络的应用,展示了如何通过容器名称进行通信。
摘要由CSDN通过智能技术生成

一、Docker容器数据卷

1.为什么会出现容器数据卷?

        数据存储在容器中,如果容器删除,那么数据就会丢失;为了实现数据可以持久化,那就需要docker容器中产生的数据可以同步到本地,即容器之间可以数据共享;所以产生了容器数据卷技术:目录的挂载,即将容器内的目录,挂载到Linux上面!

2.使用数据卷

①  方式一:直接使用命令的方式来挂载

# 通过docker run 的 -v 命令(-it:交互模式 -d:后台模式)
docker run -it -v 宿主机目录:容器内目录 

# 测试
docker run -it -v /home/ceshi:/home/software centos /bin/bash

# 容器启动之后,可查看是否挂载成功,若成功,则会出现下图提示
docker inspect 容器id

在使用docker的-v 命令来挂载宿主机的目录时,发现在容器里操作挂载目录报:Permission denied

出现这个问题的原因是:CentOS7中的安全模块selinux把权限禁掉了,解决方法如下:
# 方法一:在运行容器的时候,给容器加特权,也就是加上 --privileged=true 参数:
docker run -it -v /home/ceshi:/home/software --privileged=true centos /bin/bash

# 方法二:关闭selinux:
 - 临时关闭:setenforce 0
 - 永久关闭:修改/etc/sysconfig/selinux文件,将SELINUX的值设置为disabled

# 方法三:添加selinux规则,改变要挂载的目录的安全性文本
chcon [-R] [-t type] [-u user] [-r role] 文件或者目录

选项参数: 
-R  :连同该目录下癿次目录也同时修改; 
-t  :后面接安全性本文的类型字段!例如 httpd_sys_content_t ; 
-u  :后面接身份识别,例如 system_u; 
-r  :后面街觇色,例如 system_r

举例:mysql的数据卷挂载

# 1.mysql的镜像下载
docker pull mysql:5.7

# 2.启动运行mysql的容器,需要配置密码
docker run -d -p 3355:3306 -v /home/mysql/conf:/etc/mysql/conf.d -v /home/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --name=mysql mysql:5.7

选项参数: 
-d  :后台运行; 
-p  :端口映射; 
-v  :配置数据卷挂载; 
-e  :环境配置,配置数据库的密码;
--name :容器名字

# 3.测试是否可以连接上mysql(使用数据库连接工具sqlyog):如下图所示

通过本地数据库连接工具sqlyog创建的test数据库,在挂载目录里面也是存在的
匿名挂载和具名挂载:
# 1.匿名挂载: -v 容器内路径(只写容器内部的路径,没有写外部的路径(即宿主机的路径))
docker run -d -P --name=nginx01 -v /etc/nginx nginx

# 2.查看所有的卷的情况
docker volume ls

# 3.匿名挂载类似这样:
local               1f1e0f743fda523e8adf6f462aabfb18bdcd5b6296873d6d34417826865e7362

# 1.具名挂载: -v 卷名:容器内路径(卷名前面不能加/,不然就不是具名挂载,而是直接匹配宿主机路径)
docker run -d -P --name=nginx02 -v juming:/etc/nginx nginx

# 2.具名挂载类似这样:
local               juming

# 查看卷名所在的容器内路径
docker volume inspect 卷名

# 例如:查看juming卷的容器内路径
docker volume inspect juming

# 注意:docker容器内所有的卷,没有指定目录的情况下,都保存在/var/lib/docker/volumes/xxxx/_data下面,xxxx表示卷名


docker volume使用方法:

docker volume COMMAND

Commands:
  create      创建一个卷
  inspect     显示一个或多个卷的详细信息
  ls          列出卷
  prune       删除所有未使用的卷
  rm          删除一个或多个卷
如何区分匿名挂载和具名挂载:
-v  容器内路径                  匿名挂载
-v  卷名:容器内路径              具名挂载
-v  /宿主机路径:容器内路径        指定路径挂载

扩展:
# 通过-v 容器内路径:ro/rw可更改读写权限
ro:readonly,只读;说明这个路径只能通过宿主机来操作,容器内部是无法操作的
rw:readwrite,可读可写

# 一旦容器设置了权限,那么容器对我们挂载出来的内容就有限定了
docker run -d -P --name=nginx02 -v juming:/etc/nginx:ro nginx
docker run -d -P --name=nginx02 -v juming:/etc/nginx:rw nginx

②  方式二:通过DockerFile创建数据卷

二、DockerFile

DockerFile就是用来构建docker镜像的文件,实际上就是命令参数脚本文件,通过脚本命令生成镜像

# 举例:创建一个dockerfile文件(文件名:testDokcerFile),文件里面的内容如下:(指令都是大写)
FROM centos
VOLUME ["volume01","volume02"]
CMD echo "------end------"
CMD /bin/bash

# 通过docker build命令(后面的“.”不能丢)
docker build -f dockerfile文件路径 -t 容器 .
docker build [OPTIONS] PATH | URL | -

Options:
  -c,          CPU份额(相对权重)
  -f,          Dockerfile的名称(默认为“PATH/Dockerfile”)
  -m,          内存限制
  -q,          成功时取消生成输出并打印图像ID
  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值