Docker 外部访问容器Pp、数据管理volume、网络network 介绍

外部访问容器

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

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

╭─will in ~                                                                                                                                    11:11:27
╰─(。ŏ_ŏ)  docker run -tid --name redis -P redis
344ea0c6b48a9db551f530998ce901347d72ba9b03a82628979aaddd53189fe7╭─will in ~                                                                                                                                    11:11:32
╰─ヾ(;゚;Д;゚;)ノ゙  docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED                  STATUS              PORTS                     NAMES
344ea0c6b48a        redis               "docker-entrypoint.s…"   Less than a second ago   Up 2 seconds        0.0.0.0:32769->6379/tcp   redis

当使用-p标记时,Docker会映射一个指定端口到内部容器开放的网络端口。

╭─will in ~                                                                                                                                    11:11:34
╰─╰(*°▽°*)╯  docker run -tid --name redis-1 -p 6380:6379 redis
4b10e4b28fe7125fb40b8a338f6bb225ef3e4e5917722d63af61e300857a2220╭─will in ~                                                                                                                                    11:13:27
╰─(。ŏ_ŏ)  docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED                  STATUS              PORTS                     NAMES
4b10e4b28fe7        redis               "docker-entrypoint.s…"   Less than a second ago   Up 2 seconds        0.0.0.0:6380->6379/tcp    redis-1

数据卷

数据卷 是一个可供一个或多个容器使用的特殊目录,它绕过 UFS,可以提供很多有用的特 性:

  • 数据卷 可以在容器之间共享和重用
  • 对 数据卷 的修改会立马生效
  • 数据卷 默认会一直存在,即使容器被删除

启动一个挂载数据卷的容器并映射端口,将宿主机的 8088映射到nginx容器的80端口,将指定目录/Users/will映射到宿主机的根目录。

╭─will in ~                                                                                                                                    11:00:50
╰─ε=ε=ヾ(;゚д゚)/  docker run -tid --name nginx -v /Users/will:/usr/share/nginx/html -p 8088:80 nginx
4d95127b3a60393fe8e078bce8919a53c8f2566066e4968b6a7f73cc1e22176d

通过inspect查看mounts,ports。

"Mounts": [{"Type": "bind","Source": "/Users/will","Destination": "/usr/share/nginx/html","Mode": "","RW": true,"Propagation": "rprivate"}
],"Ports": {"80/tcp": [{"HostIp": "0.0.0.0","HostPort": "8088"}]
}

通过在宿主机创建文件测试,在终端显示“helloworld”,则完成。

╭─will in ~                                                                                                                                    11:02:52
╰─(ง๑ •̀_•́)ง  touch index.html╭─will in ~                                                                                                                                    11:03:02
╰─٩(ŏ﹏ŏ、)۶  echo "helloworld" > index.html ╭─will in ~                                                                                                                                    11:03:09
╰─(*´・д・)?  curl localhost:8088
helloworld

容器互联network

随着 Docker 网络的完善,强烈建议大家将容器加入自定义的 Docker 网络来连接多个容器, 而不是使用 --link 参数。

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

╭─will in ~                                                                                                                                    11:19:21
╰─(ノ˚Д˚)ノ   docker network create -d bridge my-net
c90d0b1e79783e673f58f1ec2b2c472f034693eca54296adb364351091f0b9fb

  • -d 参数指定 Docker 网络类型,有 bridge overlay 。

创建2个容器并连接到新建的 my-net 网络,通过第2个容器ping第一个容器,如:在busybox2中pingbusybox1,查看是否能够连接成功。

╭─will in ~                                                                                                                                    11:19:22
╰─(º﹃º)   docker run -it --rm --name busybox1 --network my-net busybox sh
/ #╭─will in ~                                                                                                                                    11:09:29
╰─ε=ε=ヾ(;゚д゚)/  docker run -it --rm --name busybox2 --network my-net busybox sh
/ # ping busybox1
PING busybox1 (172.26.0.2): 56 data bytes
64 bytes from 172.26.0.2: seq=0 ttl=64 time=0.148 ms
64 bytes from 172.26.0.2: seq=1 ttl=64 time=0.291 ms

  • 这样, busybox1 容器和 busybox2 容器建立了互联关系。
╭─will in ~/will/project/cluster                                                                                                               11:23:33
╰─(゚3゚)~♪  docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED              STATUS              PORTS                     NAMES
47215f45415c        busybox             "sh"                     About a minute ago   Up About a minute                             busybox2
4af85ed6478c        busybox             "sh"                     2 minutes ago        Up 2 minutes                                  busybox1

 

总结

  • 通过宿主机端口映射到容器,可以在宿主机方便的开启多个服务,例如多个redis、mysql、nginx服务,而不再需要在宿主机做更多配置的变更。
  • 通过数据卷可以将宿主机的数据目录挂载到容器中,利用容器的环境各种服务运行已有的数据目录,而不在需求在宿主机部署环境,docker环境也容易部署,减少了宿主机环境部署的复杂性。
  • 通过网络network可以将多个容器连接在一起,容器间的通信即可以使用容器名,而不再使用IP,IP的变动的,而容器名是可以自定义的,例如我们在使用nginx配置的时候,需要关联php环境的配置,则此时,我们就可以通过容器名在docker-compose中定义好,而不再需要使用IP。部署集群也是同样好处。

转载于:https://www.cnblogs.com/will-xz/p/9910341.html

Docker 外部访问容器Pp、数据管理volume、网络network 介绍相关推荐

  1. Unity3d 网络编程(一)(Unity3d内建网络Network介绍)

    首先个人说说题外话,Unity3d使用的网络库核心是用C++实现的一款商业网络游戏引擎库. RakNet.所以对于移动设备来说,用Unity3d来写server是全然能够的,而且内建网络库的各项功能封 ...

  2. Docker ❀ 容器内部/外部通信、端口映射、网络模式、自定义容器网络

    文章目录 1.网络通讯 命名空间类型 2.网络模式 Docker服务默认存在四组网络模式 3.端口映射 -p : 容器指定端口映射为本地随机端口: -p : 容器指定端口映射为本地指定端口: -p : ...

  3. Docker学习:外部浏览器访问容器 | 容器访问容器 | 访问容器的常用5种方式 | -p -P 详解

    前言 本讲是从Docker系列讲解课程,单独抽离出来的一个小节,主要介绍容器间内部相互访问和外部访问容器的一些方法,它和前面两篇:容器五种(3+2)网络模式.容器之间单/双向通信 |--link /自 ...

  4. 阿良老师 Docker学习_容器网络

    veth pair:成对出现的一种虚拟网络设备,数据从一端进,从另一端出.用于解决网络命名空间之间的隔离.(宿主机和容器) docker0:网桥是一个二层网络设备,通过网桥可以将linx支持的不同的端 ...

  5. Docker操作笔记(四)使用网络

    使用网络 Docker允许通过外部访问容器或容器互联的方式来提供网络服务. 一.外部访问容器 容器中可以运行一些网络应用,要让外部也可以访问这些应用,可以通过 -P 或 -p 参数来指定端口映射. 当 ...

  6. 查看此docker网络连接模式_Docker网络模式介绍

    一.概述 docker的网络驱动有很多种方式,按照docker官网给出的网络解决方案就有6种,分别是:bridge.host.overlay.macvlan.none.Network plugins, ...

  7. docker(5、网络2) 1、容器间通信的三种方式 2、 容器如何访问外部 3、 外部如何访问容器

    1.容器之间可通过 IP,Docker DNS Server 或 joined 容器三种方式通信 自定义网络 根据业务需要可通过 bridge 驱动创建类似前面默认的 bridge 网络 1.自定义网 ...

  8. 外部访问docker容器(docker run -p/-P 指令) docker run -d -p 5000:5000 {hostPort:containerPort(映射所有接口地}

    https://www.cnblogs.com/williamjie/p/9915019.html (2)-p(小写)则可以指定要映射的IP和端口,但是在一个指定端口上只可以绑定一个容器.支持的格式有 ...

  9. 外部访问docker容器(docker run -p/-P 指令)

    容器中可以运行一些网络应用,要让外部也可以访问这些应用,可以通过 -P(大写) 或 -p (小写) 参数来指定端口映射. (1)当使用 -P 标记时,Docker 会随机映射一个 49000~4990 ...

最新文章

  1. c语言括号匹配的检验,检验括号匹配的算法
  2. 和qc哪个发展更好_城西公司举办2020年度QC成果推广交流发布会
  3. 在Docker中部署Asp.net core2.1以及修改发布
  4. 【Processing学习笔记】安装与入门
  5. 根据数据库名称glkf查看使用的用户
  6. Python连接DB2数据库
  7. 怎么让plsqldev恢复界面视图复位
  8. c语言校招笔试试题,腾讯2014校园招聘C语言笔试题
  9. 三维地图前端js api对比分析
  10. 实验二、人工智能:产生式系统(动物识别系统)
  11. 绝对估值法和相对估值法
  12. 详细且通俗讲解轻量级神经网络——MobileNets【V1、V2、V3】
  13. 计算机信息管理专业 英文,计算机信息管理专业英文简历范文
  14. 从开发平台到智能供应链,AI技术如何推动企业智能化升级?
  15. Google代码规范书写格式,告别丑陋代码
  16. 【古典入门】巴洛克音乐
  17. halide编程技术指南(连载一)
  18. 37%,最佳停止观望点
  19. 【投屏】Scrcpy源码分析二(Client篇-连接阶段)
  20. Python product函数介绍

热门文章

  1. java变量命名规则_C++变量的命名规则
  2. C++轻量级微服务_微服务的部署
  3. notePad++安装及json,xml格式化插件安装
  4. 如何利用数据挖掘结束单身
  5. 交换排序图解_排序算法(一):初级比较排序
  6. 中的工程图怎样才能做成正规图纸_新一代一拖二口罩机图纸详细设计三维模型带工程图...
  7. Windows10下VB6.0开发——常用数值处理函数工具
  8. C语言:使用冒泡算法将数组中的数据从大到小进行排序
  9. DNS服务器的基本工作
  10. flume流程之taildir-memory-hdfs