首页 > 其他分享 >Docker如何与外界互通(chrono《kubernetes入门实战课》笔记整理)

Docker如何与外界互通(chrono《kubernetes入门实战课》笔记整理)

时间:2022-11-01 20:48:55浏览次数:47  
标签:tmp 容器 run kubernetes chrono -- 宿主机 Docker docker

Docker与外界互通的三种方式

1、拷贝文件

docker cp命令,可以直接在主机和容器之间互相拷贝(容器间不可以),格式和cp是一样的,就是注意要标明容器ID,例如:docker cp a.txt 062:/tmp

2、共享目录

在宿主机上需要共享的目录,挂载到虚拟机上,这样就可以实现虚拟机和宿主机的互通。具体方式为在docker run的时候,就加上-v,命令为:docker run -d --rm -v /tmp:/tmp redis,即把宿主机的/tmp目录挂载在容器里,这样容器里对/tmp的操作,对宿主机也是生效的,同时也是共享了宿主机的/tmp。如果有频繁操作宿主机文件的需求,可以用这个方式

3、网络互通

docker提供了三种网络模式,分别是null、host、bridge。

null:最简单的模式,没有网络,但允许其他的网络插件来定义网络连接;

host:直接使用宿主机网络,所有容器会共享宿主机的IP地址和网卡。优点是没有中间层,通信效率高,缺点是,缺少隔离,运行太多的容器时,容易有端口冲突。使用方式为,docker run 的时候添加--net=host,例如:docker run -d --rm --net=host nginx:alpine;

bridge:桥接模式,实际上是通过软件虚拟出来一个类似交换机的网桥docker 0,之后容器和宿主机通过虚拟网卡接入这个网桥,相比host,通信效率会低一些。可以run的时候--net=bridge,但其实不加也没有关系,因为默认就是这个网络模式。在宿主机上可以直接通过docker inspect xx | grep IPAddress来查看容器IP,是一个172.17.0.x的IP地址;

宿主机的docker 0 :

 

 

 

如何分配服务端口号

加入一个“中间层”,由容器环境例如Docker来统一管理分配端口号,在本机端口和容器端口之间做一个“映射”,容器内部还是自己的端口号,但是外部看起来是另一个端口号,这样就可以避免冲突了。端口号映射需要使用bridge模式,docker run的时候,使用-p参数,形式和-v类似,用冒号分隔。如下就是将本机的80和8080,分别映射到了两个容器的80端口:

  • docker run -d -p 80:80 --rm nginx:alpine
  • docker run -d -p 8080:80 --rm nginx:alpine

使用docker ps可以直观看到port这里的映射关系:

 

标签:tmp,容器,run,kubernetes,chrono,--,宿主机,Docker,docker
From: https://www.cnblogs.com/1234roro/p/16848739.html

相关文章

  • docker部署安装
    Ubuntu22.04(使用apt-get进行安装)#step1:安装必要的一些系统工具sudoapt-getupdatesudoapt-get-yinstallapt-transport-httpsca-certificatescurlsoftware-p......
  • Docker Hub(chrono《kubernetes入门实战课》笔记整理)
    dockerpull的时候,如果没有明确指定镜像仓库,就会使用默认的“DockerHub”(https://hub.docker.com/),是docker公司官方搭建的服务。【如何在DockerHub上挑选镜像】docker......
  • Dockerfile(chrono《kubernetes入门实战课》笔记整理)
    【容器分层】每个镜像都是基于一些已有的系统,资源等组合起来的,假设N个镜像都是基于centos7.0系统,如果是直接打包做镜像,就会需要打包N份centos7系统,这对磁盘存储和网络传输......
  • Docker容器监控之CAdvisor+InfluxDB+Granfana
    1、创建目录#mkdircig2、新建docker-composevidocker-compose.ymlversion:'3.1'volumes:grafana_data:{}services:influxdb:image:tut......
  • Docker不香吗?为什么还要用k8s
    其实Docker和k8s并非直接的竞争对手,它俩相互依存。Docker是一个容器化平台,而k8s是Docker等容器平台的协调器。虚拟化技术已经走过了三个时代,没有容器化技术的演......
  • 使用Docker部署软件运行环境
    什么是docker?Docker是基于Go语言进行开发实现,一个开源的应用容器引擎。采用Linux内核的cgroup,namespace,以及AUFS类的UnionFS等技术,对进程进行封装隔离,也可以实现虚拟化,隔离......
  • 三 docker安装rabbitMQ之springboot集成stomp,实现前端主动刷新
    一 场景分析对于一些需要数据同步的场景中,例如后台数据有变化,需要程序主动刷新前端界面的数据显示,这样能提供更好的用户数据交互,能第一时间了解到资源信息的变化,而不是......
  • docker install
    sudousermod-aGdockerusername添加用户组$exit注销用户$sudoservicedockerstart启动docker$dockerversion检验安装是否成功$systemc......
  • [转]Docker启动Get Permission Denied
    经测试RHEL7.6下,加完用户组后,需重启docker原文地址:Docker启动GetPermissionDenied-warm3snow-博客园(cnblogs.com)以下问题及解决方法都在Ubuntu16.04下,其他环......
  • docker配置nginx转发服务
    一,准备宿主机配置文件目录cd/homesudomkdir-pnginx/{conf.d,logs}二,编写nginx配置文件注意proxy_pass,因为是docker内部运行,127.0.0.1/localhost代表docker环境内......