(05)【Docker学习笔记】之 Docker容器连接

网络端口映射

1.拖取web应用镜像

$ docker pull training/webapp

2.创建一个python应用容器

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

b84340e5347fb61cc4fcc7c059eff4ef82ce5eed5864d913a477240cb374e6bd

也可指定容器绑的IP和绑定端口

我们也可以使用 -p 标识来指定容器端口绑定到主机端口。

-P :是容器内部端口随机映射到主机的高端口。
-p : 是容器内部端口绑定到指定的主机端口。

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

然后就可以通过访问127.0.0.1:5000访问容器的5000端口了

上面默认绑定的时tcp端口,如果要绑定UDP端口,可以在端口后面加上/udp

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

用docker port 命令可以快捷查看端口绑定情况

$ docker port silly_blackwell 5000

Docker容器的互联

给容器命名

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

新建一个docker网络

$ docker network create -d bridge test-net

参数说明:

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

其中 overlay 网络类型用于 Swarm mode,在本小节中你可以忽略它。

运行两个容器连接到新建的test-net网络:

$ docker run -itd --name test1 --network test-net centos:7 /bin/bash

$ docker run -itd --name test2 --network test-net centos:7 /bin/bash

进入test1 然后 ping test2 ,如果能ping通 则 网络建立成功

多个容器互联时,推荐使用Docker Compose

配置DNS

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

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

设置后启动容器。容器的DNS会自动配置为114.114.114.114 和8.8.8.8

配置完成后,重启docker才能生效。

查看容器内的DNS是否生效

#docker run -it --rm centos:7 cat /etc/resolv.conf

只给某一个容器配置DNS

$ docker run -it --rm -h host_centos --dns=114.114.114.114 --dns-search=test.com centos

参数说明:

-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。

如果在容器启动时没有指定 --dns 和 --dns-search,Docker 会默认用宿主主机上的 /etc/resolv.conf 来配置容器的 DNS。

发布了58 篇原创文章 · 获赞 15 · 访问量 6万+

猜你喜欢

转载自blog.csdn.net/one312/article/details/103768783