您的位置:首页 > 运维架构 > Docker

第六章:docker的网络基础配置

2019-05-23 23:35 2206 查看

第六章:docker的网络基础配置

1、网络基础配置的作用:

docker目前提供了映射容器端口到宿主机和容器互联机制来为容器提供网络服务。

2、端口映射实现访问容器
①、从外部访问容器应用
当容器中运行一些程序,需要外部访问的时候,可以通过-P或-p参数来指定端口,如果使用-P标记,docker会速记映射一个49000~49900的端口至容器内部开放的网路端口:

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

例如:

通过上图可以看出 本地主机的32769被映射到了容器的5000端口。此时访问宿主机的32769端口即可访问容器内Web应用:

此时也可以通过如下命令来查看应用的信息:

sudo docker logs -f 7c5c141614a7

例如:

②、映射所有接口地址
使用hostPort:containerPort格式将本地5000端口映射到容器的5000端口。

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

如果多次使用-p标记可以绑定多个端口:

sudo docker run -d -p 2000:5000 -p 4000:5000 -p 9000:5000 training/webapp python app.py

此时通过sudo doocker ps 查看发现本地共有5个端口映射到容器的5000:

通过宿主机浏览器访问:

③、映射到指定地址的指定端口
可以使用【ip:hostPort:containerPoer】例如指定127.0.0.1:5000:

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

④、映射到指定地址的任意端口
可以使用【ip::containerPort】,使用后本地主机会自动分配一个端口:

sudo docker run -d -p 127.0.0.1::5000 training/webapp python app.py
# 同时还可以使用UDP来标记端口
sudo docker run -d -p 127.0.0.1:5000:5000/udp traning/webapp python app.py

⑤、查看映射端口配置
使用【docker port】来查看当前映射端口配置

sudo docker port odoo 8069

例如:

3、容器互联实现容器间通信

// 容器链接是除了端口映射外另一种可以与容器中应用进行交互的方式。

①、自动启容器命名使用【–name】:

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

即可使用【docker ps】来验证是定的命名:

sudo docker ps -l
# 或者
sudo docker inspect -f "{{ .Name }}" [ID]
例如:sudo docker inspect -f "{{ .Name }}" ede1c8dd266a

例如:

注意:当执行了【docker run】的时候如果添加–rm,则容器在终止后会立刻删除,注意 --rm 和 -d 参数不能同时使用。
②、容器互联–【--link】:
例如:

# 创建 一个新的数据库容器
sudo docker run -d --name db1 training/postgres
# 删除之前创建的web容器
sudo docker rm -f web
# 然后创建一个新的web容器,并将它连接到db容器:
sudo docker run -d -P --name web --link db1:db1 training/webapp python app.py
注意:--link 参数格式为 --link name:alias 其中name是要链接的容器名称,alias是链接的别名
#使用docker ps查看容器链接:
sudo docker ps
## docker通过两种方式为容器公开链接信息
①、sudo docker run --rm --name web2 --link db1:db1 training/webapp env
注意:DB_开头的是供web容器链接db1容器使用。
②、sudo docker run -t -i --rm --link db1:db1 training/webapp /bin/bash
注意:可以看到两个hosts信息,其中一个是web容器的,一个是db1容器的。
# 链接db1容器:
ping db1

例如:

总结:用户可以链接多个子容器到父容器。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: