Docker中网络功能相关Docker是允许通过外部访问容器或者容器互联的方式来提供网络服务。外部访问容器:通过-P或者-p参数指定端口映射,-P是随机;-p是指定。-P : Docker会随机映射一个端口到内部容器开放的网络端口。用docker run -d -P training/webapp python app.py 创建启动一个容器。然后再用docker container ls -l (或者docker ps)看下

容器内5000被映随机射到了本地的32768。(看下下面的测试)

刷新几次上面的网址,然后看下log  (docker logs 1db63003b6b1)

我本地windows电脑的ip是103,虚拟机(宿主机器)ip 104,容器是172.17.0.2 。-p: 则可以指定要映射的端口,并且,在一个端口上只可以绑定一个容器。支持的格式:ip:hostPort:containerPort | ip::containerPort | hostPort:containerPort端口一对一映射(所有ip)docker run -d -p 5000:5000 training/webapp python app.py 端口一对一映射,指定ipdocker run -d -p 127.0.0.1:5000:5000 training/webapp python app.py 映射到指定地址的任意端口(我的docker是19.03.5版本,下面的这个命令失效,会随机映射一个端口出来)docker run -d -p 127.0.0.1::5000 training/webapp python app.py默认是tcp端口,可以指定udp端口docker run -d -p 127.0.0.1:5000:5000/udp training/webapp python app.py-p标记可以多次使用来绑定多个端口docker run -d -p 5000:5000 -p 3000:80 training/webapp  python app.py可以通过docker port xxxx来查看端口映射情况

然后是第二个姿势容器互联之前docker很多都是用--link进行互联,很多人已经建议不要这么用了,推荐是把容器加入自定义的Docker网络来进行互联操作。新建Docker网络:docker network create -d bridge my-net-d参数指定Docker网络类型,有bridge和overlay。其中overlay用于Swarm mode。运行一个容器并连接到新建的my-net网络分别打开三个终端,每个终端执行下面中的一条。docker run -it --rm --name busybox1 --network my-net busybox shdocker run -it --rm --name busybox2 --network my-net busybox shdocker container ls

讲道理现在正在跑着的两个容易应该是可以互联的(在一个局域网下),分别在两个启动容器的终端里通过ping来确认彼此互联

也能看到他们两个的ip,一个是172.18.0.3,另一个是172.18.0.2,有一点要清楚,他们现在都是在上面我们手动创建的那个my-net网络里。此时在宿主机上也是能ping通那两个ip的,但是记得是直接ping ip不是上面两台容器的那个操作方式。

可以ifconfig看下此时宿主机的一些信息。

如果是多个容器之间进行互联,推荐是直接Docker Compose,之后会整理这个相关的笔记。看到那个docker0了吗,到这我突然记得,貌似是不创建网络,直接默认大家是连接到docker0上的。我自己本地测试了一下,也是开启三个终端,然后分别执行上面那些命令,但是不指定network,然后发现确实是三个终端都彼此可以ping通的。(直接ping ip不是容器名字)配置DNS如果想要配置全部容器的DNS,直接在宿主机上  /etc/docker/daemon.json  文件中增加dns这个值{"dns" : ["114.114.114.114","8.8.8.8"]}就行了。这样每次启动容器自动配置为这两个。如果想要手动指定:--dns=IP_ADDRESS添加 DNS 服务器到容器的  /etc/resolv.conf  中。如果是改主机名可以用下面这个-h HOSTNAME  或者  --hostname=HOSTNAME  设定容器的主机名,它会被写到容器内的  /etc/hostname  和  /etc/hosts设定容器的搜索域--dns-search=DOMAIN  设定容器的搜索域,当设定搜索域为  .example.com时,在搜索一个名为 host 的主机时,DNS 不仅搜索 host,还会搜索host.example.com还有一种改容器DNS的方式就是直接用之前说的 文件挂载的方式直接挂载容器的/etc/resolv.conf文件出来。这个不做演示了(这个是我自己想的,感觉应该可行,就算可行,也不建议直接把容器的DNS文件和本地的DNS文件绑定在一起,这样就会导致容器有修改宿主主机的DNS的权限了)。

Docker网络相关相关推荐

  1. docker 网络相关与坑

    docker的网络 我们在使用docker run创建Docker容器时,可以用–network标志 选项指定容器的网络模式,Docker有以下4种网络模式: host模式:使用 --net=host ...

  2. 使用docker网络相关命令

    翻译自docker官方文档,原文:https://docs.docker.com/engine/userguide/networking/work-with-networks/ 这篇文章提供了几个你可 ...

  3. 谈谈 Docker 网络

    基于近期学习的 Docker 内容,整理与 Docker 网络相关的知识. 实验环境:Centos 7.4 Docker 版本如下: Client:Version: 18.03.1-ceAPI ver ...

  4. docker 网络 实现

    最近在学习docker网络相关的知识,关于网络这块儿记下来,以便review dokcer安装完成之后默认提供三种网络  bridge host none  docker默认使用bridge brid ...

  5. Docker网络配置进阶

    Docker启动会默认创建docker0虚拟网桥,是Linux的一个bridge,可以理解成一个软件交换机.它会在挂载到它的网口之间进行转发. 之后所有容器都是在172.17.0.x的网段上,并且可以 ...

  6. Docker学习四:Docker 网络

    前言 本次学习来自于datawhale组队学习: 教程地址为: https://github.com/datawhalechina/team-learning-program/tree/master/ ...

  7. Docker知识总结 (六) Docker网络

    文章目录 docker网络相关命令 Docker0 (虚拟网桥) - -link(docker0不支持容器名连接访问)(使两个容器网络连通) (不推荐使用) 自定义网络(支持容器名连接访问) 网络连通 ...

  8. Docker 网络解读

    Docker 容器在运行时,会涉及多个容器相互连接,甚至与宿主机上的应用连接的问题.既然需要产生连接,那么就必然要依赖网络. 网络在Docker的技术体系中,是一个不容易搞清楚的要点.因此,希望您读完 ...

  9. 理解Docker(5):Docker 网络

    本系列文章将介绍 Docker的相关知识: (1)Docker 安装及基本用法 (2)Docker 镜像 (3)Docker 容器的隔离性 - 使用 Linux namespace 隔离容器的运行环境 ...

最新文章

  1. java解析xml 忽略dtd_使用dom4j解析XML时候忽略DTD文件
  2. python写web难受-(2017)你最不建议使用的Python Web框架?
  3. 【Android】Android程序自己主动更新
  4. composer的安装以及laravel项目的生成
  5. Angular中实现动态路由跳转并传递参数
  6. TensorFlow发布全新版本,又会带来哪些变革?
  7. openhub_介绍OpenHub框架
  8. Android SDK Manager 在win8.1上的闪退问题【转载】
  9. MicroSoft CryptoAPI data/file encrypt/decrypt
  10. FIle类和递归方法的使用
  11. mac上的mongodb安装与使用的踩坑记
  12. Open3d之自定义可视化
  13. ASP.NET Razor - html中使用if else
  14. android 三星截长屏,三星如何截屏手机长图,三星四种截图方法介绍
  15. 【软考】专栏导读(软考全面介绍、资格报考建议)
  16. C/C++《程序设计基础(C语言)课程设计》[2023-04-20]
  17. Android Animation动画详解(二): 组合动画特效
  18. 方兴未艾的CORBA
  19. 四川大学计算机专业调剂,四川大学计算机学院(软件学院)研究生调剂
  20. 使用python编写多普勒频移函数,绘制多普勒频移随速度变化的曲线,给出代码并举例,代码以markdown格式给出...

热门文章

  1. 如何kill掉tomcat服务
  2. 《Linux From Scratch》第一部分:介绍 第一章:介绍- 1.4. 资源
  3. HDU1862 EXCEL排序【排序】
  4. Android应用安全与防范之签名校验
  5. JDK1.8源码阅读系列之二:LinkedList
  6. JQuery操作CheckBox和Radio
  7. ffmpeg流文件合并concat
  8. C# 操作redis
  9. 架构漫谈读后感之软件架构师如何工作
  10. Javaweb 第1天 HTML和CSS课程