06|打破次元壁:容器该如何与外界互联互通
如何拷贝容器内的数据
- 深入了解
- 翻译
- 解释
- 总结
本文介绍了容器与外部系统之间的互联互通方法,包括文件拷贝、网络互通和端口映射。通过Docker提供的`cp`命令和`docker run -v`命令,容器可以与主机进行文件共享,提升工作效率。此外,文章还讨论了Docker提供的三种网络模式:null、host和bridge,并通过实例演示了它们的应用。在解决端口冲突问题方面,作者介绍了使用`docker run -p`命令将主机端口映射到容器内部端口的方法。总的来说,本文以简洁清晰的语言,帮助读者快速了解了容器与外部系统互联互通的方法,为读者提供了实用的技术指导。文章还提出了两个思考题,引发读者思考和讨论。
《Kubernetes 入门实战课》,新⼈⾸单¥59
全部留言(36)
- 最新
- 精选
- xmr1.第四节的COPY是在构建镜像时把本地文件拷贝到镜像,而本节的cp命令是在容器运行后容器和宿主机互相拷贝文件,一个构建时,一个运行时。 2.host性能好,隔离性差;bridge隔离性好,性能差了一点。host一般用在集群的边界需要和集群外通信的场景,比如ingress-nginx;bridge用于集群内部,如无特殊需求默认都是bridge。
作者回复: awesome
2022-07-0524 - 马以1:第四节的copy命令是在容器启动过程中的COPY命令,该命令应该是在声明了“namespace”之后,所以这个时候进程看到的世界是一个隔离的环境; 而这里的COPY更像是站在“上帝视角(宿主机操作系统层面)”进行拷贝,所以这里不受“namespace”的约束; 2:host就是简单粗暴效率高,适合小规模集群的简单拓扑结构;bridge适合大规模集群,有了bridge就有更多的可操作空间,比如XLAN和VXLAN这些,它可以提供更多的可定制化服务,比如流量控制、灰度策略这些,从而像flannel和Calico这些组件才有了更多的发挥余地。
作者回复: 说的很好。 COPY指令会把文件拷贝进镜像,“永远存在”,而cp命令是暂时的。
2022-07-04321 - SuperSnowdocker run -d --rm redis --rm不是删除命令么?为什么要在这里用呢?
作者回复: --rm是告诉docker容器运行完毕后直接删除,就是为了省事,不用再手动删除了。
2022-07-0427 - 🙄COPY会生成新的layer,对于镜像是永久的。copy是在当前layer执行一个命令,不生成新的layer
作者回复: great
2022-07-0436 - peter请教老师几个问题啊: Q1:docker exec XXX ip addr 容器查询IP的命令中,“XXX”是任意的吗? Q2:“Redis 容器里没有 ip 命令”,为什么? 如果Redis 容器里不能使用 ip 命令,那么,可以用“docker inspect”来查看其ip地址吗? Q3:“宿主机的 IP 地址则是“172.17.0.1””,哪里显示了宿主机的IP地址?图上并没有显示啊。 Q4:“docker inspect adb”查出的不仅仅是redis和nginx的IP吧,是查出所有容器的IP吗? 必须用adb吗? 用其他命令不行吗? Q5: “curl 127.1:8080 -I”,这个命令中“127.1”是“127.0.0.1”的缩写吗?
作者回复: 1.XXX就是容器id,或者是容器名。 2.Redis镜像里没有安装ip命令,当然就无法使用了。“docker inspect”是docker的功能,与容器和镜像都没有关系。 3.截图里没有,这个IP地址是docker预留的。 4.“docker inspect”后面要接容器id或者名字,“adb”就是当时的容器id 5.是的,我就是图省事。
2022-07-0426 - 逗逼师父1. docker cp是操作宿主和容器之间的文件传输,Dockfile里的COPY命令是在制作镜像时使用的。 2. host效率高,bridge更加灵活;host在平时开发时比较适合,因为我们的电脑一般端口不容易冲突;bridge的话更适合在测试或者生产环境中去使用,可以灵活配置应用端口。
作者回复: awesome
2022-07-045 - 凉人。hi,想问个问题,如果我们用网桥模式,任然是外部一个端口映射容器内一个端口,这有什么优势吗
作者回复: 当然有优势,每个容器可以自己用任意端口,不用担心冲突,开发变简单了,维护的成本也可以减少。
2022-07-054 - Frank老师,怎么修改容器的网络模式,host/bridge 一般情况下都没有设置它,直接运行容器,怎么知道容器运行在什么模式下?
作者回复: 默认是bridge模式,可以用ip addr命令,看容器里的网络情况,有veth就是bridge,直接用宿主机网卡就是host。
2022-07-0424 - 六月有一个问题想问一下,docker挂载目录进容器,宿主机的文件会覆盖掉容器的同名目录,但是,有时候想反过来,在挂载的目录里输出容器内原本同名目录下的文件,而不是被宿主机挂载的空目录覆盖掉。这个能实现么
作者回复: 好像是不能吧,可以去看一下docker的官网文档。
2022-07-0663 - 朱雯问题1: cp命令是容器运行时拷贝进去 有点类似拷贝进入内存 copy是永久拷贝进镜像 等于是放入磁盘 问题2:实践中 一直使用bridge模式 为了隔离而花费那么一点效率我觉得完全值得。 最后 我一直以为只有bridge模式 当时面试官问我 docker容器的运行模式有哪些 我直接告诉他没什么网络模式 我就这么用的 现在才彻底搞明白😄
作者回复: 其实docker的模式我们简单了解一下就好,因为后面主要学的是Kubernetes。
2022-07-043