Docker - 使用网络


🌍 外部访问容器

Docker 容器的美妙之处在于它们的隔离性,但有时我们需要从外部访问容器内的服务。这时,Docker 的端口映射功能就派上了用场。以下是如何配置和使用这个功能的详细步骤。


1️⃣ 自动映射端口:

使用 -P 标记,Docker 会自动为容器选择一个端口映射到容器内部的开放端口:

$ docker run -d -P nginx:alpine
$ docker container ls -l

这样,你可以看到容器的 80 端口被映射到了主机的某个随机端口(如 32768)。


2️⃣ 查看访问记录:

可以使用 docker logs 来查看容器的访问日志:

$ docker logs <CONTAINER_ID>

3️⃣ 手动映射端口:

使用 -p 标记,你可以手动选择要映射的端口:

  • 映射所有接口地址:
$ docker run -d -p 80:80 nginx:alpine
  • 映射到指定地址的指定端口:
$ docker run -d -p 127.0.0.1:80:80 nginx:alpine
  • 映射到指定地址的任意端口:
$ docker run -d -p 127.0.0.1::80 nginx:alpine
  • 映射 UDP 端口:
$ docker run -d -p 127.0.0.1:80:80/udp nginx:alpine

4️⃣ 查看映射的端口配置:

要查看容器的端口映射配置,可以使用 docker port 命令:

$ docker port <CONTAINER_ID> 80

🔔 注意事项:

  • 容器有自己的内部网络和 IP 地址。可以使用 docker inspect 查看。

  • -p 标记可以多次使用来绑定多个端口。例如:

$ docker run -d \
    -p 80:80 \
    -p 443:443 \
    nginx:alpine

🔗 容器互联

在 Docker 的世界中,容器之间的互联是非常重要的。它们可以轻松地共享数据、网络和其他资源。以下是容器互联的一些基本方法和指南。


1️⃣ 新建网络:

为了使容器能够互相通信,首先需要创建一个 Docker 网络。

$ docker network create -d bridge my-net

这里使用的是 bridge 网络类型,这是最常用的网络类型。


2️⃣ 连接容器:

首先运行一个容器并加入到新建的 my-net 网络。

$ docker run -it --rm --name busybox1 --network my-net busybox sh

再次运行另一个容器,也加入到这个网络中。

$ docker run -it --rm --name busybox2 --network my-net busybox sh

3️⃣ 验证容器互联:

busybox1 容器中,你可以使用 ping 命令来测试与 busybox2 容器的连接。

/ # ping busybox2

类似地,你也可以在 busybox2 容器中 ping busybox1 容器,以验证它们之间的连接。


4️⃣ Docker Compose:

如果你有很多容器需要互相连接,最佳的选择是使用 Docker Compose。它是一个工具,可以用来定义和运行多容器的 Docker 应用程序。通过简单的 YAML 文件,你可以配置你的应用的服务、网络和卷。


🌟 小贴士:

  • 使用 Docker Compose 可以极大地简化容器间的互联过程。

  • 使用 --link 参数现在已经被视为已弃用的方法,最好使用网络来连接容器。

  • 通过正确配置 Docker 网络,你可以确保容器之间的通信既安全又高效。

总之,Docker 提供了多种方式来实现容器间的互联,从简单的 --link 参数到复杂的网络配置,确保你选择最适合你需求的方法。


🌐 配置 DNS

在 Docker 中, DNS 配置对于容器的网络通信至关重要。以下是如何自定义容器的 DNS 配置的步骤和详细解释。


1️⃣ 容器的挂载信息:

Docker 利用虚拟文件系统挂载容器的 DNS 配置。你可以在容器内部使用 mount 命令查看这些挂载信息。

$ mount

2️⃣ 全局 DNS 配置:

如果你想为所有容器设置统一的 DNS,可以在 Docker 的配置文件 /etc/docker/daemon.json 中设置。

{
  "dns" : [
    "114.114.114.114",
    "8.8.8.8"
  ]
}

之后,每次启动的容器会自动使用这些 DNS。


3️⃣ 验证 DNS 设置:

要验证容器是否使用了正确的 DNS 配置,可以运行以下命令:

$ docker run -it --rm ubuntu:18.04 cat /etc/resolv.conf

4️⃣ 手动指定容器的 DNS 配置:

使用 docker run 启动容器时,你可以指定一些参数来自定义容器的 DNS 设置:

  • -h HOSTNAME--hostname=HOSTNAME: 设置容器的主机名。

  • --dns=IP_ADDRESS: 添加 DNS 服务器地址。

  • --dns-search=DOMAIN: 设置容器的搜索域。


🌟 小贴士:

  • 如果在启动容器时没有特别指定 DNS 参数,Docker 会默认使用主机的 /etc/resolv.conf 配置。

  • 要记住,手动指定的 DNS 设置会覆盖 Docker 的默认设置或 /etc/docker/daemon.json 中的设置。

总的来说,Docker 提供了灵活的方式来配置容器的 DNS,无论是全局设置还是为特定容器设置,都可以轻松实现。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

yueerba126

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

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

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

打赏作者

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

抵扣说明:

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

余额充值