您现在的位置: 明党参 > 明党参药效 > 正文 > 正文

应用容器引擎总结篇Docker深

  • 来源:本站原创
  • 时间:2022/5/7 13:11:55

引言

在上篇文章应用容器引擎总结篇Ⅱ中简单介绍了Docker的基本使用,这次我们来说说Docker的深入使用,本章主要讲述容器挂载、dockerFile及docker网络。

容器数据卷

当我们在使用docker容器的时候,会产生一系列的数据文件,这些数据文件在我们关闭docker容器时是会消失的,但是其中产生的部分数据我们希望能够保存起来另作用途。

Docker将应用与运行环境打包成容器发布,我们希望在运行过程中产生的部分数据是可以持久化的,而且容器之间我们希望能够实现数据共享。

那么,什么是容器数据卷,通俗来说,docker容器数据卷可以看成是我们生活中常用的u盘,它存在于一个或多个的容器中,由docker挂载到容器,但不属于联合文件系统,Docker不会在容器删除时删除其挂载的数据卷。容器数据卷的特点有:

数据卷可以在容器之间共享或重用数据;数据卷中的更改可以直接生效;数据卷中的更改不会包含在镜像的更新中;数据卷的生命周期一直持续到没有容器使用它为止。添加数据卷的方式有两种,第一种是直接通过命令行挂载,第二种是通过dockerFile挂载。命令行挂载使用命令-v挂载即可。如下所示:

[root

iZbp33ra20f20uajfspoZ~]#dockerrun--namemysql-p:-v/root/mysql:/var/lib/mysql-eMYSQL_ROOT_PASSWORD=root-dmysqlecfc99ddc5cdaa65facc8ef9e8bdb55fa0f#/root/mysql为系统目录,/var/lib/mysql为容器内目录#挂载后在/root/mysql或者/var/lib/mysqlCRUD操作都会同步过去

挂载又分匿名挂载和具名挂载,上述指定了宿主机目录的是具名挂载,像-v后面不指定宿主机目录的是匿名挂载。如下所示:

[root

iZbp33ra20f20uajfspoZ~]#dockerrun--namemysql-p:-v/var/lib/mysql-eMYSQL_ROOT_PASSWORD=root-dmysqlecfc99ddc5cdaa65facc8ef9e8bdb55fa0f#/var/lib/mysql为容器内目录,像这种匿名挂载的目录都默认在docker目录下的/volumes/xxxx/_data文件夹内。如果不知道容器对应的文件夹,可以根据对应的命令行查询该容器的详细信息,拿到该容器匿名挂载的目录名。此命令行在上章已有描述,在此不做说明

容器之间的数据同步:--volumes-from。如下所示:

[root

iZbp33ra20f20uajfspoZ~]#dockerrun--namemysql-p:-v/root/mysql:/var/lib/mysql:ro-eMYSQL_ROOT_PASSWORD=root-dmysqlecfc99ddc5cdaa65facc8ef9e8bdb55fa0f[root

iZbp33ra20f20uajfspoZ~]#dockerrun--namemysql2--volumes-frommysql-p:-eMYSQL_ROOT_PASSWORD=root-dmysqlecfc99ddc5cdaa65facc8ef9e8bdb55fa0f#这样name为mysql的和name为mysql2的容器数据就同步了

我们可以看到上面容器之间的数据同步使用了ro权限,那么,ro是什么意思呢?是否还有其它权限呢?我们接着往下看。

ro#readonly只读rw#readwrite可读可写#一旦创建容器时设置了容器权限,容器对挂载出来的内容就有权限了![root

iZbp33ra20f20uajfspoZ~]#dockerrun--namemysql-p:-v/root/mysql:/var/lib/mysql:ro-eMYSQL_ROOT_PASSWORD=root-dmysqlecfc99ddc5cdaa65facc8ef9e8bdb55fa0f[root

iZbp33ra20f20uajfspoZ~]#dockerrun--namemysql-p:-v/root/mysql:/var/lib/mysql:rw-eMYSQL_ROOT_PASSWORD=root-dmysqlecfc99ddc5cdaa65facc8ef9e8bdb55fa0f#docker默认的是rw#ro说明该路径只能通过宿主机来操作,容器内部是无法操作

除了命令行挂载我们还可以通过dockerFile的VOLUME挂载,dockerFile具体使用可以看下一节,这里不在阐述。

DockerFile

前面演示的docker镜像都是官方的镜像,我们可不可以做自己的镜像运行生成容器或者上传到dockerHub、阿里云呢?

说到这个就不得不说到docker的dockerFile,dockerFile是用来构建docker镜像的文件、命令参数脚本。

dockerFile构建镜像的步骤如下:

编写一个dockerFile文件-dockerbuild构建镜像-dockerrun运行镜像-dockerpush发布镜像(DockerHub、阿里云仓库)。

在说dockerFile前我们可以进DockerHub


本文编辑:佚名
转载请注明出地址  http://www.mingdangcan.com/mdsyx/10185.html

  • 上一篇文章:
  • 下一篇文章: 没有了
  • Copyright © 2012-2020 明党参版权所有



    现在时间: