当前位置:   article > 正文

Docker的数据管理和端口映射实现容器访问_可以通过端口来直接访问docker,并进行管理了

可以通过端口来直接访问docker,并进行管理了

Docker的数据管理

存储资源类型

在使用Docker的过程中,需要查看容器内应用产生的数据,或者需要将容器内数据进行备份,甚至需要多个容器之间进行数据共享时,势必会设计到容器的数据管理:

  • Data Volume(数据卷)

  • Data Volume Dontainers —数据卷容器

Docker容器有两种方式 卷 和 绑定挂载 可将容器中的文件存储在宿主机的文件系统上,这样即使在容器停止之后这些文件也会被保留。如果你在Linux上运行Docker,你也可以使用tmpfs挂载。

volume , bind和tmpfs三者的相同点和区别:

  • 相同之处:

无论您选择使用哪种类型去使用,数据在容器内看起来都是相同的。它被视为容器文件系统中的目录或单个文件。

  • 不同之处:

卷(volume)存储在Docker管理的主机文件系统的一部分中(在Linux上是:/var/lib/docker/volumes/)。非Docker进程不应该修改这部分文件系统。卷是在Docker中保留数据的最佳方式。

  • 绑定挂载(bind mount):

就是把主机的本地目录挂载到容器中某个挂载点。可以存储在主机系统的任何位置。他们甚至可能是重要的系统文件或目录。Docker主机或Docker容器上的非Docker进程可以随时修改它们。

  • tmpfs挂载(tmpfs mount):

仅存储在主机系统的内存中,而不会写入主机系统的文件系统。

数据卷

1、Data Volume的特点:

  • Data Volume是目录或文件,而非没有格式化的磁盘(块设备)。

  • 容器可以读写volume中的数据。

  • volume数据可以被永久的保存,即使使用它的容器已经销毁。

2、Data Volume的使用

1)通过参数 -v 运行一个容器,将本地的 /html 目录挂载到容器的 /usr/share/nginx/html 目录上

[root@docker1 ~]# docker run --name c1 -d -v /html:/usr/share/nginx/html -p 80:80 nginx:1.14-alpine //将容器c1的 /usr/share/nginx/html 和宿主机的 /html 和做一个挂载关联

8e6ca89aac03198e79e9b91fd9be10d3f8a9f52ce384c3fd318b628949896aa9

[root@docker1 ~]# docker ps //确保容器处于运行状态

2)在宿主机上对网页内容进行修改

[root@docker1 ~]# echo “ceshi” > /html/index.html

[root@docker1 ~]# curl 192.168.159.145

ceshi

3)在容器上对网内内容进行修改

[root@docker1 ~]# docker exec -it c1 /bin/sh

/ # echo “techi again” > /usr/share/nginx/html/index.html

/ # exit

[root@docker1 ~]# curl 192.168.159.145

techi again

[root@docker1 ~]# cat /html/index.html

techi again

综上所述:已经将宿主机的 /html 与 容器的 /usr/share/nginx/html 进行了关联,也能做到持久化的存储。

端口映射实现容器访问

外部访问Docker容器

1、当使用 -P 标记是,Docker 会随机映射一个49000~49900 的端口到内部容器开放的网络端口。

2、-p(小写)则可以指定要映射的IP和端口,但是在一个指定端口上可以绑定一个容器。支持的格式有 hostPort : containerPort、 ip : hostPort : containerPort、ip : : containerPort。

将容器的5000端口映射到指定地址127.0.0.1的5000端口上:

docker run -it -d -p 127.0.0.1:5000:5000 busybox /bin/sh

将容器的4000端口映射到127.0.0.1的任意端口上:

docker run -it -d -p 127.0.0.1::4000 busybox /bin/sh

将容器的80端口映射到宿主机的8000端口上:

docker run -itd -p 8000:80 busybox /bin/sh

查看映射端口配置:

docker port 容器名/容器ID

Docker容器间通信

使用link方式使容器可以相互通信

docker run --link 可以用来链接2个容器,使得源容器(被链接的容器)和接收容器(主动去链接的容器)之间可以相互通信,并且接收容器可以获取源容器的一些数据,如源容器的环境变量。

例:

docker run --name MySQL -e MYSQL_ROOT_PASSWORD=123456 -d --restart=always mysql:5.6

//注:-e 是配置环境变量,–restart=always 是一个重启策略,是指容器重启之后一直保持启动状态

然后就可以向容器MySQL 数据库执行SQL语句了:

[root@docker1 ~]# docekr run -it --link MySQL --rm mysql:5.6 sh -c ‘exec mysql -uroot -p"ROOT_PASSWORD" -h"IP"’

示例:搭建论坛

[root@docker1 ~]# docker run --name db -e MYSQL_ROOT_PASSWORD=123456 -d --restart=always mysql:5.7

[root@docker1 ~]# docker ps

[root@docker1 ~]# docker run --rm --name web --link db:db y109/discuz env

[root@docker1 ~]# docker run --name web -d -p 80:80 --link db:db y109/discuz

0d067f23fe1bdb8960125b846d79ca38ad65da2742b26965717545a398d5c1d3

[root@docker1 ~]# docker ps

通过windows浏览器访问

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号