docker容器访问权限(docker 容器自定义 hosts 网络访问操作)
docker容器访问权限
docker 容器自定义 hosts 网络访问操作在 docker-compose.yml 中增加 extra_hosts 关键字就可以将数据写入到容器的 /etc/hosts。
extra_hosts
添加主机名映射。
extra_hosts:
“somehost:162.242.195.82”
“otherhost:50.31.209.229”
将会在/etc/hosts创建记录:
162.242.195.82 somehost
50.31.209.229 otherhost
注意:
如果指向的是本机,不要写容器的ip,(因为IP重启后会变,除非你给容器设置固定ip)而是写宿主机的ip,如192.168.xxx.xxx
补充:Docker 网络:host模式
当我们准备将Docker技术应用到生产级别的场景时,我们需要了解很多网络方面的知识。网络是Docker中相对比较薄弱的部分,我们有必要了解Docker的网络知识,以满足更高的网络需求。
本节先对Docker网络模型中的host模型进行理论介绍,再通过案例的实操,让您更好地去理解docker网络模型。
Docker网络当你安装完Docker时,它会自动创建三个网络。你可以使用以下docker network ls命令列出这些网络:
docker network ls
结果应如下
NETWORK ID NAME DRIVER SCOPE 594430d2d4bb bridge bridge local d855b34c5d51 host host local b1ecee29ed5e none null local
Docker内置这三个网络,运行容器时,你可以使用该来指定容器应连接到哪些网络。
我们在使用docker run创建Docker容器时,可以用--network标志 选项指定容器的网络模式,Docker有以下4种网络模式:
host模式:使用 --net=host 指定。
none模式:使用 --net=none 指定。
bridge模式:使用 --net=bridge 指定,默认设置。
container模式:使用 --net=container:NAME_or_ID 指定。
host模式Docker使用了Linux的Namespaces技术来进行资源隔离,如PID Namespace隔离进程,Mount Namespace隔离文件系统,Network Namespace隔离网络等。一个Network Namespace提供了一份独立的网络环境,包括网卡、路由、Iptable规则等都与其他的Network Namespace隔离。
host模式类似于Vmware的桥接模式,与宿主机在同一个网络中,但没有独立IP地址。一个Docker容器一般会分配一个独立的Network Namespace。
但如果启动容器的时候使用host模式,那么这个容器将不会获得一个独立的Network Namespace,而是和宿主机共用一个Network Namespace。容器将不会虚拟出自己的网卡,配置自己的IP等,而是使用宿主机的IP和端口。
如下图所示:容器与主机在相同的网络命名空间下面,使用相同的网络协议栈,容器可以直接使用主机的所有网络接口
案例验证
查看主机链路接口
ip a
我们右侧云环境主机的IP为{host0.ip}/24上用host模式启动nginx容器,监听它的tcp80端口。
使用--net host参数来指定网络模型使用host模式
docker run --name=nginx --net=host -p 80:80 -d nginx
查看容器链路接口,与主机一致
docker exec -it nginx cat /etc/hosts
这时外界要访问容器中的应用,则直接使用{host0.ip}:80即可,不用任何NAT转换,就像直接跑在宿主机中一样。但是,容器的其他方面,如文件系统、进程列表等还是和宿主机隔离的。
curl {host0.ip}
host 模式简单并且性能高,host 模式下面的网络模型是最简单和最低延迟的模式,容器进程直接与主机网络接口通信,与物理机性能一致,host 不利于网络自定配置和管理,并且所有主机的容器使用相同的IP。
也不利于主机资源的利用。对网络性能要求比较高,可以使用该模式。否则应该使用其他模式
以上为个人经验,希望能给大家一个参考,也希望大家多多支持开心学习网。如有错误或未考虑完全的地方,望不吝赐教。
- docker镜像查看分层(Docker 镜像优化从1.16GB到22.4MB)
- docker如何查看容器目录(docker 查看容器的挂载目录操作)
- docker容器默认内存大小(Docker 修改docker存储位置 修改容器镜像大小限制操作)
- docker启动命令大全(Docker常用命令Study03详解)
- docker容器内服务怎么启动(docker部署confluence的完整步骤)
- docker正常容器启动失败(Docker容器无法停止删除的解决方案)
- docker 重启容器后数据丢失(如何恢复docker容器数据)
- jenkins回滚docker容器(关于docker部署的jenkins跑git上的程序的问题)
- docker运行redis并操作(Docker安装MySQL和Redis的方法步骤)
- elasticsearch docker(在Docker中安装Elasticsearch7.6.2的教程)
- elasticsearch启动报错(解决Docker启动Elasticsearch7.x报错的问题)
- docker和jenkins自动化(Docker使用Git实现Jenkins发布、测试项目的详细流程)
- dockerbuild清除缓存(Docker自动化构建Automated Build实现过程图解)
- docker 构建整个环境(Docker如何快速搭建LNMP环境最新)
- docker容器技术搭建个人博客(使用Portainer部署Docker容器的项目实践)
- 使用docker在linux环境中部署springboot包的教程(使用docker在linux环境中部署springboot包的教程)
- 没钱只能吃土(没钱要吃土了幽默短信发朋友圈)
- 今年考高会很难吗(今年高考会考试吗)
- 盘古开天地 他创造了世界,谁创造了盘古 盘古是伏羲吗(盘古开天地他创造了世界)
- 关于队徽 你了解这些么 二(关于队徽你了解这些么)
- 冬天来了手脚冰凉 真不是因为上辈子你是折翼的天使(冬天来了手脚冰凉)
- 0 1 岁婴儿最强作息指南,照着做养出天使宝宝(01岁婴儿最强作息指南)
热门推荐
- 结构、枚举和数组的区别
- mysql是否支持透明数据加密(MySQL的加密解密的几种方式小结)
- shell监控docker各种状态(如何监控docker容器运行状态 shell 脚本)
- php实现无cookie的session(php实现多站点共用session实现单点登录的方法详解)
- 简简单单教你用python写个游戏(python3 pygame实现接小球游戏)
- php的模块加载(PHP中的自动加载操作实现方法详解)
- Docker 运行多个Springboot的详细教程(Docker 运行多个Springboot的详细教程)
- APP界面设计的建议
- python的os模块操作(Python OS模块实例详解)
- net微服务架构部署方式(基于Apache的支持.NET2.0的Web服务器搭建)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9