Docker-数据卷和数据卷容器,端口映射及容器之间互联测试操作

Docker 数据卷和数据卷容器

数据卷(Data Volumes):数据卷是一个可供一个或多个容器使用的特殊目录,它将主机操作系统目录直接映射进容器,

特征

1.数据卷 可以在容器之间共享和重用
2.对数据卷的修改会立马生效
3.对数据卷的更新,不会影响镜像
4.数据卷 默认会一直存在,即使容器被删除

数据卷容器:如果用户需要在多个容器之间共享一些持续更新的数据,最简单的方式是使用数据卷容器。
数据卷容器也是一个容器,但是它的目的是专门提供数据卷给其他容器挂载

数据卷:挂载宿主系统的存储空间
数据卷容器:挂载容器的存储空间(也可以实现容器之间文件的共享)

数据卷创建方式

注:数据卷默认会放到/var/lib/docker/volumes路径下

 docker volume create     名字

在这里插入图片描述
查看所有的数据卷

 docker volume ls

查看指定数据卷的详细信息(显示一个JSON格式的数据)

docker volume inspect mysql

在这里插入图片描述

语法格式:docker run -v 宿主机挂载点–name 容器名 -it 镜像名

[root@controller ~]# docker run -v /var/www:/data1 --name web11 -it centos:7 /bin/bash
[root@c920dab00c03 /]# ls
anaconda-post.log  bin  data1  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
[root@c920dab00c03 /]# cd data1/
[root@c920dab00c03 data1]# touch test1
[root@c920dab00c03 data1]# ls
test1

在这里插入图片描述
另起一个终端查看是否有/var/www/test1文件
在这里插入图片描述

数据卷容器创建

1.先创建可以被挂载的容器web22

[root@docker ~]# docker run --name web22 -v /data1 -v /data2 -it centos:7 /bin/bash
[root@6b432f4fcfc7 /]# ls
anaconda-post.log  data1  dev  home  lib64  mnt  proc  run   srv  tmp  var
bin                data2  etc  lib   media  opt  root  sbin  sys  usr

2.另起终端,创建新的容器,指定挂载web22容器

[root@docker ~]# docker run -it --volumes-from web22 --name db1 centos:7 /bin/bash 
[root@c0c357c27cae /]# cd data1/
[root@c0c357c27cae data1]# touch test111
[root@c0c357c27cae data1]# cd ../data2
[root@c0c357c27cae data2]# touch test222

3.在web22中查看/data1和/data2中是否有刚刚创建的

[root@c05dab4285e3 /]# cd data1/
[root@c05dab4285e3 data1]# ls
test111
[root@c05dab4285e3 data1]# cd /data2/
[root@c05dab4285e3 data2]# touch test222
[root@c05dab4285e3 data2]# ls
test222

实现了容器之间的共享

端口映射

-P:随机生成端口号

[root@docker ~]# docker run -d -P httpd:latest
[root@controller ~]# docker ps -a
CONTAINER ID   IMAGE          COMMAND              CREATED          STATUS                        PORTS                   NAMES
8e8bda0f8f07   httpd:latest   "httpd-foreground"   3 minutes ago    Up 3 minutes                  0.0.0.0:49153->80/tcp   romantic_joliot

'可观测到随机生成的端口号为49153'

-p:指定端口号

[root@controller ~]# docker run -d -p 123:80 httpd:latest 
c0cad644f097a21e19507b1ef5b3540d65273990043b0d4cbf73fc619a6002dd
[root@controller ~]# docker ps -a
CONTAINER ID   IMAGE          COMMAND              CREATED          STATUS                        PORTS                   NAMES
c0cad644f097   httpd:latest   "httpd-foreground"   23 seconds ago   Up 21 seconds                 0.0.0.0:123->80/tcp     condescending_bardeen

容器互联

创建容器one和two之间通信 --link 容器one:one

[root@controller ~]# docker run -itd -P --name one centos:7  /bin/bash
9c6027fc258a0d87658c3a3d1d468780cd756f486dfdf40e0a07c5af5934231e
[root@controller ~]# docker run -itd -P --name two --link one:one centos:7 /bin/bash
d887f451ae1dbe0e1983de5e10a402982bc6c280b611a8bbda34c7f700e45885
[root@controller ~]# docker ps -a
CONTAINER ID   IMAGE          COMMAND              CREATED          STATUS                        PORTS                   NAMES
d887f451ae1d   centos:7       "/bin/bash"          7 seconds ago    Up 6 seconds                                          two
9c6027fc258a   centos:7       "/bin/bash"          53 seconds ago   Up 52 seconds                                         one

进入容器one 测试互联

[root@controller ~]# docker exec d887f451ae1d  /bin/bash
[root@controller ~]# docker exec -it d887f451ae1d  /bin/bash
[root@d887f451ae1d /]# ping one
PING one (172.17.0.4) 56(84) bytes of data.
64 bytes from one (172.17.0.4): icmp_seq=1 ttl=64 time=0.099 ms
64 bytes from one (172.17.0.4): icmp_seq=2 ttl=64 time=0.046 ms

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_50344807/article/details/114854129