深入领略Docker数据打点与端口映射

​前面两篇文章报告的是构建docker镜像的三种方法以及如何搭建docker私有客栈,而本文将报告有关docker中的数据打点及端口映射的内容。

docker数据打点 什么是docker的数据打点?

​ 先想一想关于Linux系统打点中的磁盘打点,其实本质上也都是对存储的数据举办打点,docker中的数据打点也是如此。docker中,对数据的打点主要在于两个方面,其一是为了利便查察容器内的数据,其二是实现多个容器的数据共享。

​ 那么打点docker的数据的方法有两个:数据卷和数据卷容器。下面会逐个先容。

docker的数据打点方法 数据卷

​ 数据卷是一个供容器利用的非凡目次,位于容器中,可将宿主机的目次挂载到数据卷上,对数据卷的修改操纵立即可见(其实上篇文章中已经打仗到了),而且更新数据不会影响镜像,从而实现数据在宿主机与容器之间的迁移。

​ 其实,在docker中,数据卷的利用可以类比于Linux下对目次举办的mount操纵。

数据卷容器

​ 显然,数据卷容器和数据卷不是同一个观念,可是浸染是一样的。只不外数据卷容器的目标是在容器间共享一些数据。数据卷容器就可以认为是一个普通的容器,只不外是专门用来提供数据卷给其他容器挂载利用的。

数据卷和数据卷容器的观念和区别可以通过下图来领略:

深入领略Docker数据打点与端口映射

数据卷就是宿主机中提供的一块空间(目次空间)挂载给容器,使得容器与宿主机之间可以共享文件数据,而数据卷容器是将一个容器内的一个空间(目次)挂载给另一个容器,使得容器与容器之间共享文件数据。

下面来实际来操纵一下是如何通过中两种方法对docker举办数据打点的。

如何举办对docker的数据打点?

1、建设数据卷(为后头的数据卷容器做筹备)

#今朝是空镜像和空容器情况 [root@localhost ~]# docker run -d -v /data/data1 -v /data/data2 --name web httpd Unable to find image 'httpd:latest' locally latest: Pulling from library/httpd 123275d6e508: Pull complete e984dd982a6e: Pull complete 963280e5cf81: Pull complete 6faf90d050b2: Pull complete 962b56984bb0: Pull complete Digest: sha256:d5dc0d279039da76a8b490d89a5c96da83a33842493d4336b42ccdfbd36d7409 Status: Downloaded newer image for httpd:latest 8e21b3e1366970633f01ae4d77b0f55a2d52782997138cc1e8ab70904d5f487b [root@localhost ~]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 8e21b3e13669 httpd "httpd-foreground" About a minute ago Up About a minute 80/tcp web [root@localhost ~]# docker exec -it 8e21b3e13669 /bin/bash root@8e21b3e13669:/usr/local/apache2# ls /data/ data1 data2

2、挂载主机目次作为数据卷:数据卷实际案例

[root@localhost ~]# docker run -d -v /var/www:/data/data1 --name web1 httpd:latest 5ff89e3dbdd25bbb1b105678c50364758fe62cb5c7d10aa5f47e8865ddd5e8d8 #参数表明: -d:守护历程 -v:数据卷操纵 /var/www:宿主机目次将被挂载的目次 /data/data1:容器中数据卷 --name:容器名称

3、测试

[root@localhost ~]# cd /var/www/ [root@localhost www]# touch file [root@localhost www]# ls file [root@localhost www]# docker exec -it web1 /bin/bash #在新的容器中查察目次内容 root@5ff89e3dbdd2:/usr/local/apache2# ls /data/data1/ file root@5ff89e3dbdd2:/usr/local/apache2#

4、数据卷容器实际案例

#前面已经举办建设了一个名为web的容器,个中所建设的数据卷别离挂载到了/data/data1与/data/data2目次上,利用--volumes-from选项来挂载web容器中的数据卷到新的容器 [root@localhost ~]# docker run -it --volumes-from web --name web_test httpd:latest /bin/bash root@afafb9631fc9:/usr/local/apache2# ls / bin boot data dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var root@afafb9631fc9:/usr/local/apache2# ls /data/ data1 data2 #两个目次(数据卷容器)提供应新的容器web_test利用

我们可以举办测试,在个中一个目次中建设文件,如何进入原本的数据卷容器中查察是否有该文件

root@afafb9631fc9:/usr/local/apache2# cd /data/data1 root@afafb9631fc9:/data/data1# touch newfile root@afafb9631fc9:/data/data1# exit exit [root@localhost ~]# docker exec -it web /bin/bash root@8e21b3e13669:/usr/local/apache2# ls /data/data1 newfile

​ 测试乐成了,这样可以通过数据卷容器实现容器之间的数据共享了。通过这些机制,纵然容器在运行进程中呈现妨碍,用户也不必担忧数据产生丢失了,假如产生意外,只需要快速从头建设容器即可。

下面简述一下有关docker的端口映射

docker网络通信之端口映射

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wsdjzs.html