网站首页 > 技术文章 正文
本次将主要介绍Docker的两个重要技术点:网络设置和数据卷。
1. 数据卷
数据卷提供了一种宿主机和容器共享数据的方式,有些时候需要用它来做持久化和数据共享。当做持久化时,通常数据卷会比较大,可以将其放在单独的磁盘、卷上,这个时候容器只是一个执行环境。当做数据共享时,可以用于开发和测试分布式系统。数据卷主要通过参数-v来指定。
1.1创建一个数据卷
[root@izuf6bh06kx49y4h12z95sz ~]#docker run -it --name evcgtest -v /evcgdata lnt-evcg:1.0 /bin/bash
该命令创建了一个容器evcgtest,同时为容器创建了一个/evcgdata数据卷,/evcgdata是容器内部的目录,对应的宿主上目录在/var/lib/docker/volumes下面,可以通过docker inspect命令查看。
[root@izuf6bh06kx49y4h12z95sz ~]#docker inspect 2e277999f107
[
{
......
"Mounts": [
{
"Type": "volume",
"Name": "f18a8393c21f88e18841f69340a836c8b4a330998aaa4387baa0e016c0f32198",
"Source": "/var/lib/docker/volumes/f18a8393c21f88e18841f69340a836c8b4a330998aaa4387baa0e016c0f32198/_data",
"Destination": "/evcgdata",
"Driver": "local",
"Mode": "",
"RW": true,
"Propagation": ""
}
],
......
}
]
可以看出"Destination": "/evcgdata"是容器的持久化目录,"Source": "/var/lib/docker/volumes/f18a8393c21f88e18841f69340a836c8b4a330998aaa4387baa0e016c0f32198/_data"是对应宿主机的目录。
1.2映射一个外部卷
如果以-v src:des的方式指定,那么容器会直接将宿主机的指定目录挂载到容器内部。
[root@izuf6bh06kx49y4h12z95sz ~]#docker run -it --name evcgtest -v /mnt/evcg/data:/evcgdata lnt-evcg:1.0 /bin/bash
上面命令直接将宿主机/mnt/evcg/data目录映射到了容器/evcgdata目录。实际使用中,我们可以将信息系统产生的日志、上传的图片等资源通过数据卷存放到宿主机指定目录,进行持久化保存。
1.3容器数据卷
由于容器本身包含文件系统,那么当然也可以把容器的卷分享给另一个容器,通过--volumes-form来映射。创建一个容器数据卷,注意使用create创建即可。具体步骤如下:
[root@izuf6bh06kx49y4h12z95sz ~]#docker create -v /sharedata --name sharedata centos
通过—volumes-form使用容器数据卷。
[root@izuf6bh06kx49y4h12z95sz ~]# docker run -it --name dbtest --volumes-from sharedata centos /bin/bash
[root@a1e26bd877d7 /]# ls
bin dev etc home lib lib64 media mnt opt proc root run sbin sharedata srv sys tmp usr var
可以看到新创建的dbtest容器中有容器卷的sharedata目录。
2. 网络设置
Dokcer 通过使用 Linux 桥接提供容器之间的通信,Docker的网络模式有四种,默认使用bridge模式,通过主机和容器的端口映射通信。
none
使用--net=none 指定,容器不能访问外部网络,内部存在回路地址。
bridge
使用--net=bridge 指定,bridge是docker的默认网络设置,桥接是在主机上的,通常为docker0,每启动一个容器时,会为该容器创建一个veth,veth一端连接到docker0,另一端连接到容器eth0.
host
使用--net=host 指定,host就是使用宿主机的网络,和宿主机公用一个Network Namespace,容器不会虚拟出自己的网卡和IP等,而是使用宿主机的IP和端口。但容器的文件系统、进程列表等还是与宿主机隔离的。
container
使用--net=container:containerid 指定,该模式指定新创建的容器和已经存在的另一个容器共享一个Network Namespace,而不是和宿主机共享。同样两个容器除了网络方面,其它仍然是隔离的。
猜你喜欢
- 2024-10-14 Docker Overlay 网络学习 dockercompose 网络
- 2024-10-14 盘点c++几种常见的设计模式及具体实现
- 2024-10-14 Docker新手福音!这个开源控制面板让你更快上手Docker
- 2024-10-14 Docker-掌握这三种方法,创建自己的docker镜像
- 2024-10-14 docker 基础概念 docker基于什么
- 2024-10-14 小白也能轻松上手,深度体验绿联私有云DX4600 Docker功能
- 2024-10-14 一文带你了解docker常用命令 docker常用命令及参数
- 2024-10-14 Docker最佳实践的反模式 docker反向代理
- 2024-10-14 docker中容器如何实现通信 docker容器之间如何通信
- 2024-10-14 工程化Docker:确保应用程序的可靠性、可扩展性和可维护性
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- oraclesql优化 (66)
- 类的加载机制 (75)
- feignclient (62)
- 一致性hash算法 (71)
- dockfile (66)
- 锁机制 (57)
- javaresponse (60)
- 查看hive版本 (59)
- phpworkerman (57)
- spark算子 (58)
- vue双向绑定的原理 (68)
- springbootget请求 (58)
- docker网络三种模式 (67)
- spring控制反转 (71)
- data:image/jpeg (69)
- base64 (69)
- java分页 (64)
- kibanadocker (60)
- qabstracttablemodel (62)
- java生成pdf文件 (69)
- deletelater (62)
- com.aspose.words (58)
- android.mk (62)
- qopengl (73)
- epoch_millis (61)
本文暂时没有评论,来添加一个吧(●'◡'●)