1.数据卷(Data Volumes)
数据卷
是一个可供容器使用的特殊目录,它将宿主机操作系统目录直接映射到容器。
数据卷
可以在容器之间共享和重用,容器之间传递数据变得高效- 对
数据卷
内数据的修改会立马生效,无论是在宿主机操作还是容器内操作- 对
数据卷
的更新不会影响镜像数据卷
会一直存在,即使容器停止运行并被删除,数据卷也不会被影响
1.1 创建数据卷
docker volume create test-volume
1.2 查看数据卷列表
docker volume ls
DRIVER VOLUME NAME
local test-volume
1.3 查看数据卷信息
docker volume inspect test-volume
[
{
"CreatedAt": "2022-01-04T12:50:20+08:00",
"Driver": "local",
"Labels": {},
"Mountpoint": "/var/lib/docker/volumes/test-volume/_data",
"Name": "test-volume",
"Options": {},
"Scope": "local"
}
]
1.4 挂载数据卷到容器
docker run -d -P \
--name web \
# -v test-volume:/usr/share/nginx/html \
--mount source=test-volume,target=/usr/share/nginx/html \
nginx:alpine
1.5 数据卷容器
用专门的容器来挂载数据卷,其他容器通过挂载这个容器来实现数据共享。如果需要在多个容器间共享一些持续更新的数据,我们就可以使用数据卷容器,使用
--volumes-from
命令来挂载数据卷容器,--volumes-from
可以多次使用,来从多个容器挂载多个数据卷
docker run -d --name myworld1.0 my-world:2.0
docker run -d --volumes-from myworld1.0 --name myworld2.0 my-world:2.0
docker run -d --volumes-from myworld1.0 --name myworld3.0 my-world:2.0
只要在修改了一个容器的数据,其余两个容器都能看到更新后的数据。使用--volumes-from
所挂载的数据卷容器本身并不需要处于运行状态
2.端口映射与容器互联
在项目中,微服务与微服务之间存在着相互访问,这就需要容器与容器能够相互访问。Docker为我们提供两种方式来实现容器之间的相互访问
2.1 端口映射
当容器启动的时候,如果不指定端口映射,在容器外部是无法通过网络访问容器内的服务的。我们可以通过-P
或-p
参数来指定端口映射。-P
(大写)参数会随机映射端口到容器内部开放的端口
# 随机映射容器内部开放的端口
docker run -d -P --name myworld4.0 my-world:2.0
# 将容器的8080端口映射到宿主机的8080端口
docke run -d -p 8080:8080 --name myworld5.0 my-world:2.0
查看容器的端口映射情况
docker port [container id]
2.2 容器互联
使用--link
参数来实现容器之间的互联。--link参数的格式为--link name: alias, 其中name是要链接的容器的名称 ,alias是别名。
docke run -d --name myworld5.0 --link myworld5.0:other-world my-world:2.0
最后,欢迎关注微信公众号一起交流