Docker--4.Docker容器连接篇

目录

  • 1. Docker 容器内服务的端口访问
    • 1.1 随机映射端口
    • 1.2 指定端口映射
      • 1.2.1 指定端口映射
      • 1.2.2 指定地址及端口映射
      • 1.2.3 udp绑定
  • 2 Docker容器互联
    • 2.1 容器命名
    • 2.2 新建网络
    • 2.3 连接容器
      • 2.3.1 新建两个容器
      • 2.3.2 容器的互相访问
    • 2.4 容器DNS配置
      • 2.4.1 全部容器DNS配置
      • 2.4.2 指定容器DNS配置
    • 3 学习链接

1. Docker 容器内服务的端口访问

1.1 随机映射端口

运行一个服务

docker run -d -P training/webapp python app.py

在这里插入图片描述
参数说明:

  • -P: 随机映射本机的端口
  • -d:以守护进程开启,后台运行此容器。
  • -p: 制定本机端口映射

1.2 指定端口映射

1.2.1 指定端口映射

docker run -d -p 5000:5000 training/webapp python app.py

参数说明:

  • -p: 制定本机端口映射

在这里插入图片描述

1.2.2 指定地址及端口映射

docker run -d -p 127.0.0.1:5001:5000 training/webapp python app.py

在这里插入图片描述

1.2.3 udp绑定

docker run -d -p 127.0.0.1:5000:5000/udp training/webapp python app.py

在这里插入图片描述

2 Docker容器互联

docker提供了一个连接系统将多个容器连接到一起,共享连接信息。

docker连接时会创建父子关系,其中父容器可以看到子容器的信息。

2.1 容器命名

docker run的时候可以通过添加--name标识来命名容器。例如:

docker run -d -P --name runoob training/webapp python app.py

2.2 新建网络

docker network create

$ docker network create -d bridge test-net

参数说明:

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

其中 overlay 网络类型用于 Swarm mode,在本小节中你可以忽略它。
Docker--4.Docker容器连接篇_第1张图片

ps:

  • passthru模式:只允许单个子接口连接主接口,且必须设置成混杂模式,一般用于子接口桥接和创建 VLAN 子接口的场景。

  • private模式:隔离功能比VPEA更强,阻断了广播和组播,即使交换机开启hairpin也无法通信。

  • bridge模式:寄生在同一个物理设备的macvlan设备可以直接通讯,不需要外接的hairpin设备帮助,使用如下的命令创建一个bridge的macvlan网络。

  • overlay:管理 Swarm 中 Docker 守护进程间的通信。你可以将服务附加到一个或多个已存在的 overlay 网络上,使得服务与服务之间能够通信。


2.3 连接容器

2.3.1 新建两个容器

 docker run -itd --name test1 --network test-net ubuntu /bin/bash
 docker run -itd --name test2 --network test-net ubuntu /bin/bash

在这里插入图片描述

2.3.2 容器的互相访问

进入容器1

docker exec -it test1 /bin/bash

访问容器2

ping test2

Docker--4.Docker容器连接篇_第2张图片
PS:没有ping命令时:

apt-get update
apt install iputils-ping

同理,也可以进入test2,然后去ping test1容器。


2.4 容器DNS配置

2.4.1 全部容器DNS配置

在宿主机的 /etc/docker/daemon.json 文件中增加以下内容来设置全部容器的 DNS:

{
  "dns" : [
    "114.114.114.114",
    "8.8.8.8"
  ]
}

设置完后需要重启docker 。

/etc/init.d/docker  restart 

打印容器DNS信息

docker run -it --rm  ubuntu  cat etc/resolv.conf

2.4.2 指定容器DNS配置

docker run -it --rm -h host_ubuntu  --dns=114.114.114.114 --dns-search=test.com ubuntu

PS: --dns--dns-search没有指定时会默认使用主机上/etc/resolv.conf 来配置容器的 DNS。
参数说明

  • –rm:容器退出时自动清理容器内部的文件系统。

  • -h HOSTNAME 或者 --hostname=HOSTNAME: 设定容器的主机名,它会被写到容器内的 /etc/hostname 和 /etc/hosts。

  • –dns=IP_ADDRESS: 添加 DNS 服务器到容器的 /etc/resolv.conf 中,让容器用这个服务器来解析所有不在 /etc/hosts 中的主机名。

  • –dns-search=DOMAIN: 设定容器的搜索域,当设定搜索域为 .example.com 时,在搜索一个名为 host 的主机时,DNS 不仅搜索 host,还会搜索 host.example.com。

Docker--4.Docker容器连接篇_第3张图片

3 学习链接

学习链接

你可能感兴趣的:(docker,docker,容器,运维)