Docker学习七《使用网络》

一、前言

Docker 允许通过外部访问容器或容器互联的方式来提供网络服务

二、外部访问容器

容器中可以运行一些网络应用,要让外部也可以访问这些应用,可以通过 -P-p 参数来指定端口映射

1、使用 -P 标记时,Docker 会随机映射一个端口到内部容器开放的网络端口

docker run -d -P nginx:latest

在这里插入图片描述
使用 docker ps 可以看到,本地主机的 49154 被映射到了容器的 80 端口。此时访问本机的 49154端口即可访问容器内 NGINX 默认页面
在这里插入图片描述

2、使用 -p 映射所有接口地址

使用 hostPort:containerPort 格式本地的 80 端口映射到容器的 80 端口,可以执行

docker run -d -p 80:80 nginx:latest

在这里插入图片描述

3、映射到指定地址的指定端口

使用 ip::containerPort 绑定 localhost 的任意端口到容器的 80 端口,本地主机会自动分配一个端口。

docker run -d -p 127.0.0.1:8000:80 nginx:latest

在这里插入图片描述

4、使用 udp 标记来指定 udp 端口

docker run -d -p 0.0.0.1:8000:80/udp nginx:latest

5、-p 标记可以多次使用来绑定多个端口

docker run -d -p 8001:80 -p 8002:80 nginx:latest

在这里插入图片描述

6、docker logs 命令来查看访问记录

docker logs c25(容器id缩写)

在这里插入图片描述

7、查看映射端口配置

docker port c25(容器id缩写) 80

在这里插入图片描述

三、容器互联

1、新建网络

1、下面先创建一个新的 Docker 网络

docker network create -d bridge my-net

-d 参数指定 Docker 网络类型,有 bridge、overlay
2、运行一个容器并连接到新建的 my-net 网络

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

3、打开新的终端,再运行一个容器并加入到 my-net 网络

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

在这里插入图片描述
这样,busybox1 容器和 busybox2 容器建立了互联关系,我们知道这是通过 连接同一个网络进行互通。

四、配置 DNS

如何自定义配置容器的主机名和 DNS 呢?秘诀就是 Docker 利用虚拟文件来挂载容器的 3 个相关配置文件

1、在容器中使用 mount 命令可以看到挂载信息

在这里插入图片描述
这种机制可以让宿主主机 DNS 信息发生更新后,所有 Docker 容器的 DNS 配置通过 /etc/resolv.conf 文件立刻得到更新。

2、配置全部容器的 DNS ,也可以在 /etc/docker/daemon.json 文件中增加以下内容来设置

{
    
    
  "registry-mirror": [
    "https://hub-mirror.c.163.com",
    "https://mirror.baidubce.com"
  ],
	"dns" : [
    "114.114.114.114",
    "8.8.8.8"
  ]
}

配置过后,一定要重启 docker systemctl restart docker

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

在这里插入图片描述

3、--hostname=HOSTNAME 设定容器的主机名

docker run -it --hostname=udocker ubuntu:18.04

![在这里插入图片描述](https://img-blog.csdnimg.cn/20210324165737165.png
它会被写到容器内的 /etc/hostname 和 /etc/hosts

4、-dns=IP_ADDRESS 添加 DNS 服务器到容器的 /etc/resolv.conf 中

在这里插入图片描述
1、我们看到如果我们单独配置,就会替代系统/etc/docker/daemon.json配置的信息。
2、如果在容器启动时没有指定最后两个参数,Docker 会默认用主机上的 /etc/resolv.conf 来配置容器。

五、总结

一些简单的网络使用和配置

猜你喜欢

转载自blog.csdn.net/weixin_42812527/article/details/115179519