容器中可以运行一些网络应用,要让外部也可以访问这些应用,可以通过-P参数指定端口映射。
网络端口映射
创建一个Python应用容器
docker run -d -P training/webapp python app.py
指定容器绑定的网络地址,比如绑定127.0.0.1,这样我们就可以通过访问127.0.0.1:5001来访问5000端口了
docker run -d -p 127.0.0.1:5001:5000 training/webapp python app.py
当然上述例子,默认都是绑定TCP端口,如果要绑定UDP端口,可以在端口后面上加上/udp
docker run -p -d 127.0.0.1:5001:5000/udp training/webapp python app.py
使用docker port 查看端口绑定情况
docker port <容器ID>
Docker 容器互联
docker有一个链接系统允许将多个容器链接在一起,共享链接信息。docker链接会创建一个父子关系,其中父容器可以看到子容器的信息。
容器命名
docker会对我们创建的容器自动命名,当然我们也可以使用-name参数来命名容器。
docker run -d -P --name CSDN training/webapp python app.py
新建网络
下面我们先创建一个新Docker网络,-d:指定docker网络类型(bridge、overlay),其中overlay网络类型用于Swarm mode
docker network create -d bridge test-net
链接容器
运行一个容器并链接到新建的test-net网络
docker run -itd --name test1 --network test-net centos /bin/bash
打开新的终端,在运行一个容器加入到test-net网络:
docker run -itd --name test2 --network test-net centos /bin/bash
在两个容器内安装ping(进入容器的命令 docker exec -it <容器名称> /bin/bash)
yum update
yum install iputils-ping
使用ping命令查看两个容器是否连接成功
此时两个容器已建立连接关系
配置DNS
–rm:容器退出时自动清理容器内部的文件系统,-h :设置容器的主机名
docker run -it --rm -h host_centos --dns=114.114.114.114 --dns-search=test.com centos