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 挂载数据卷到容器

# 使用-v挂载
docker run -d --name jenkins -v test-volume:/var/jenkins_home jenkins/jenkins:latest
# 使用--mount挂载
# 如果type=bind,source指要宿主机中要挂载的目录的绝对路径,如果目录不存在,则会产生错误
docker run -d --name jenkins --mount type=bind,source=/test-volume:/var/jenkins_home jenkins/jenkins:latest
# 如果type=volume,source是指定数据卷名称的可选项,如果指定source,会判断数据卷是否存在,不存在则会创建该数据卷。如果未指定source,则会创建一个随机名称的数据卷。随机名称的数据卷与容器具有相同的生命周期,并在容器被销毁时被销毁
docker run -d --name jenkins --mount type=volume,source=test-volume:/var/jenkins_home jenkins/jenkins:latest

1.5 删除数据卷

docker volume rm [OPTIONS] VOLUME [VOLUME...]

Remove one or more volumes. You cannot remove a volume that is in use by a container.

Options:
  -f, --force   Force the removal of one or more volumes

1.6 清理无用数据卷

docker volume prune

1.7 数据卷容器

用专门的容器来挂载数据卷,其他容器通过挂载这个容器来实现数据共享。如果需要在多个容器间共享一些持续更新的数据,我们就可以使用数据卷容器,使用--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
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值