Docker笔记9 | Docker中网络功能知识梳理和了解
【摘要】 简单说:Docker 允许通过外部访问容器或容器互联的方式来提供网络服务。 1 外部访问容器 1.1 访问方式要想让外部访问容器中的一些网络应用,需要通过 -P 或 -p 参数来指定端口映射;-P :Docker 会随机映射一个端口到内部容器开放的网络端口;docker container ls查看到本地主机的 32768 被映射到了容器的 80 端口,此时访问本机的32768 端口即可访问...
简单说:Docker 允许通过外部访问容器或容器互联的方式来提供网络服务。
1 外部访问容器
1.1 访问方式
- 要想让外部访问容器中的一些网络应用,需要通过
-P
或-p
参数来指定端口映
射; -P
:Docker
会随机映射一个端口到内部容器开放的网络端口;docker container ls
查看到本地主机的 32768 被映射到了容器的 80 端口,此时访问本机的
32768 端口即可访问容器内NGINX
默认页面:
docker run -d -P nginx:alpine
:
-p
:指定要映射的端口(在一个指定端口上只可以绑定一个容器)。
# 支持的格式
ip:hostPort:containerPort | ip::containerPort | hostPort:containerPort
1.2 映射所有接口地址
- 方式:
hostPort:containerPort
(默认会绑定本地所有接口上的所有地址); - 举例:本地的80映射到容器的80端口:
docker run -d -p 80:80 nginx:alpine
1.3 映射到指定地址的指定端口
- 方式:
ip:hostPort:containerPort
(指定映射使用一个特定地址); - 举例:比如
localhost
地址:
docker run -d -p 127.0.0.1:80:80 nginx:alpine
- 我这里端口已经被绑定了,所以会报错,先不管这个:
1.4 映射到指定地址的任意端口
- 方式:
ip::containerPort
; - 举例:绑定
localhost
的任意端口到容器的 80 端口,本地主机会自动分配一个端口:
docker run -d -p 127.0.0.1::80 nginx:alpine
1.5 查看映射端口配置
- 命令:
docker port
;
2 容器互联
2.1 新建网络
- 创建新的docker网络:
docker network create -d bridge mynet
2.2 连接容器
- 运行容器并连接到刚才新建的网络
mynet
:
docker run -it --rm --name busybox1 --network mynet busybox sh
- 打开新的终端,再运行一个容器并加入到
mynet
网络:
docker run -it --rm --name busybox2 --network mynet busybox sh
- 再打开一个终端查看容器信息:
- 使用
ping
命令来验证两个容器建立了互联关系:
3 配置DNS
Docker
利用虚拟文件来挂载容器的 3 个相关配置文件;- 通过
mount
命令查看挂载信息:
- 宿主主机
DNS
信息发生更新后,所有Docker
容器的 DNS 配置通过/etc/resolv.conf
文件立刻得到更新; - 配置全部容器
DNS
,也可以在/etc/docker/daemon.json
文件中增加以下内容来设置:
{
"dns" : [
"123.123.123.123",
"6.6.6.6"
]
}
- 则,每次启动容器
DNS
为以上的配置。使得配置生效的命令为:
docker run -it --rm ubuntu:18.04 cat etc/resolv.conf
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)