数据卷及容器连接

应用在容器中运行,总会用到或者产生一些数据,那么这些数据是如何保存的呢?外部又是如何使用这些数据的呢?本文包含以下内容:

  • 容器网络基础:容器通过对外暴露端口向外提供服务。
  • 数据卷的概念和使用:通过数据卷存储和共享数据。
  • 容器连接:通过互联让一个容器安全地使用另外一个容器已有的服务。

一、容器网络基础

作为一个寄宿在宿主主机上的容器,我们要想办法让外部网络能够访问到它,这样才能够使用其提供的服务。当docker启动时,它会在宿主主机上创建一个名为docker0的虚拟网络接口。通过ifconfig命令,可以看到本机的网络接口情况:

可以看到,在宿主主机上有一个名为docker0的网络接口,其地址是172.17.42.1,这是docker默认分配的地址。

暴露网络端口

当在Docker中运行网络应用时,我们需要在外部访问Docker中运行的应用,这时需要通过-P或-p参数来指定端口映射。通过端口映射来实现端口暴露是容器对外提供服务的基础方法。

(1) -P(大写):使用-P参数,Docker会在宿主主机上随机为应用分配一个49000~49900内的未被使用的端口,并将其映射到容器开放的网络端口。

接下来用Docker官方提供的一个培训示例镜像training/webapp来进一步说明。

# 搜索镜像
docker search training/webapp
# 启动镜像
docker run -d -P training/webapp python app.py
# 查看容器
docker ps

这时以training/webapp镜像为基础的容器已经在后台运行起来了,Docker为它起了一个随机的名字condescending_kirch。这里注意PORTS一列,可以看到其值为0.0.0.0:49153->5000/tcp,Docker将宿主主机的49153端口映射到了容器的5000端口,并且遵守了TCP协议。

有了这个端口映射,我们就可以通过Web浏览器来访问。

我们可以用docker logs命令来查看日志输出:

(2) -p(小写):它可以指定宿主主机上的端口映射到容器内部指定的开放端口,格式有如下3种:

① hostPort:containerPort

当使用这种格式时,宿主主机中的所有网络接口都会被绑定。例如,我们想把宿主主机中的所有网络接口的80端口映射到容器的5000端口:

可以发现,绑定失败,提示80端口已被使用。通过netstat命令可以查看占用的程序。我们重新指定,把绑定换成和容器内部端口一样的5000,直到成功。

我们可以使用docker ps命令查看正在运行的容器的具体情况外,也可以使用docker port命令查看一个容器的端口:

② ip:hostPort:containerPort

指定IP地址的指定端口和容器的指定开放端口映射。例如,我们可以将环回地址上的5000端口映射到容器的5000端口,具体如下:

③ ip:containerPort

指定IP的随机端口映射到容器的指定端口。例如,我们想把容器内的5000端口和环回地址上的随机端口进行映射,可以这么做:

当容器暴露多个端口的时候,我们可以对每个端口一一进行映射。

例如,我们想将宿主主机上的5000端口和容器内的5000端口映射,4000端口和容器内的80端口映射,具体为:

成功返回后,使用docker ps命令查看映射详情:

可以看到,4000端口和80端口映射,5000端口和容器内的5000端口映射。

查看网络配置

通过docker inspect命令可以查看容器的配置信息。这里我们可以根据格式化过滤查看容器中网络相关的配置,相关代码如下:

可以看到端口映射、网桥、网关、IP以及物理地址等信息。

此外,也可以直接使用docker inspect命令找到相应的字段,操作为:

得到的输出如下:

这种JSON形式的数据展示层次相对清晰,更为易读。但直接使用docker inspect命令就意味着所有信息都将列出,所以两种方式各有所长和不足。

如果你仅仅需要查看该容器的IP地址,可以这样:

我们可以在宿主主机ping该地址:

网络可达。

二、数据卷

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

codedot

你的鼓励是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值