Docker进阶之数据卷与端口映射

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

最后,欢迎关注微信公众号一起交流

Docker进阶之数据卷与端口映射

上一篇:GFS企业分布式存储


下一篇:glusterfs部署及卷类型使用【转】