博文大纲:
一、docker的数据管理
1、数据卷
2、数据卷容器
二、docker网络通信
1、端口映射
2、容器互联
一、docker的数据管理
在docker中,为了方便查看容器内产生的数据或者将多个容器之间的数据实现共享,会涉及到容器的数据管理操作,管理docker容器中的数据主要有两种方式:数据卷和数据卷容器。
1、数据卷
数据卷是一个供容器使用的特殊目录,位于容器中,可将宿主机的目录挂载到数据卷上,对数据卷的修改操作立即可见,并且更新数据不会影响镜像,从而实现数据在宿主机与容器之间的迁移,数据卷的使用类似于Linux下对目录进行的mount挂载操作(注意:是将宿主机本地的目录挂载到容器中,举例:若宿主机本地/data目录挂载的是/dev/sdb1,那么要将/data做数据卷映射时,容器中指定的目录使用的文件系统也是/dev/sdb1,我不知道这样解释,你们能不能理解它的工作原理)。
挂载宿主机目录作为数据卷举例:
使用-v选项可以创建数据卷(只是运行容器时,创建一个目录),创建数据卷的同时将宿主机的目录挂载到数据卷上使用,以实现宿主机与容器之间的数据迁移。
需要注意的是,宿主机本地目录的路径必须是使用绝对路径,如果路径不存在,Docker会自动创建相应的路径。
[root@localhost ~]# docker run -d -p 5000:5000 -v /data/registry/:/tmp/registry docker.io/registry
#这是运行了一个私有仓库的容器,其中-p是端口映射的选项,这里不做解释。
# -v才是目录映射,将本地/data/registry/目录映射到容器中的/tmp/registry目录。
#然后容器中的/tmp/registry目录下的内容就和宿主机的/data/registry/内容一样了。
[root@localhost ~]# df -hT /data/registry/ #先查看本地/data/registry/ 挂载的文件系统
文件系统 类型 容量 已用 可用 已用% 挂载点
node4:dis-stripe fuse.glusterfs 80G 130M 80G 1% /data/registry
[root@localhost ~]# docker exec -it a6bf726c612b /bin/sh #进入私有仓库的容器中,该容器没有/bin/bash,所以使用的是/bin/sh。
/ # df -hT /tmp/registry/ #查看发现,该目录挂载的和宿主机挂载的文件系统是同一个,说明没问题。
Filesystem Type Size Used Available Use% Mounted on
node4:dis-stripe fuse.glusterfs
80.0G 129.4M 79.8G 0% /tmp/registry
2、数据卷容器
如果需要在容器之间共享一些数据,最简单的方法就是使用数据卷容器。数据卷容器就是一个普通的容器,专门提供数据卷给其他容器挂载使用。使用方法如下:首先,需要创建一个容器作为数据卷容器,之后在其他容器创建时用–volumes-from挂载数据卷容器中的数据卷使用。
容器卷创建及使用举例:
[root@localhost ~]# docker run -itd --name datasrv -v /data1 -v /data2 docker.io/sameersbn/bind /bin/bash
#创建运行一个容器,容器名为da