小白学Docker(七) Docker容器连接

网络端口映射

创建一个python应用的容器

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

我们可以指定容器绑定的网络地址比如绑定127.0.0.1

我们使用-P参数创建一个容器,使用docker ps可以看到容器端口5000绑定主机端口是随机的

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

两者的区别是

-P 是容器内部端口随机映射到主机的端口

-p 是容器内部端口绑定到指定的主机端口

另外我们可以指定容器绑定的网络地址 比如绑定127.0.0.1

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

上面这些默认绑定的都是tcp端口,如果要绑定udp端口,可以在端口后面加上/udp

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

Docker 容器互联

端口映射并不是唯一把docker连接到另一个容器的方法。

docker有个连接系统允许将多个容器连接在一起,共享连接信息。

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

容器命名

   我们可以使用 --name标识来命名容器,

docker run -d -P --name runoob 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 ubuntu /bin/bash

打开一个新的终端,再运行一个容器并加入到test-net网络

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

通过ping命令来证明test1容器和test2容器建立了互联关系

如果没有ping命令

可以在容器内执行以下命令

1.首先进入test1容器的终端

docker exec -it test1 /bin/bash

2.执行下面的命令

apt-get update

3.执行下面命令 ,选择Y

apt install iputils-ping

这时候我们的test1就有ping的命令了,但是我们的test2还没有,这时候我们就可以利用之前的知识来进行安装

因为我们的test1容器里面已经有了ping的相关环境,那么我们只需要把test1这个容器提交到一个镜像上面,然后test2再进行拉取就好了

1.首先进行容器提交镜像

docker commit -a "ubuntu" -m "添加ping相关命令" -p 4521473f27a8 ubuntu:demo23

看一下本地确实有了这个镜像

2.注意,这时候我们应该让test1和test2容器都在这个这个镜像下面创建

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

这下test1和test2都有了ping的相关命令

进入test1容器的终端并执行执行

docker exec -it test1 /bin/bash

ping test2

说明已经ping成功了

换到test2终端下结果相同 。

配置 DNS

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

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

 

Guess you like

Origin blog.csdn.net/Chen_leilei/article/details/111504362