Docker 基础网络配置详解

2020-06-17 06:52:56易采站长站整理

外部访问

随机映射端口


使用 -P 标记,Docker会随机映射一个49000-49900的端口到内部容器开放的网络端口
docker run -d -P training/webapp python app.py
docker ps -l # 显示最近创建的容器
docker logs -f web # 查看应用的信息

映射所有接口地址


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

映射到指定地址的指定端口


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

映射到指定地址的任意端口


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

指定udp端口


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

查看映射端口配置


dokcer port web 5000

新建一个docker网络


docker network create -d bridge my-net

运行容器连接到新建的my-net网络


docker run -it --rm --name busybox1 --network my-net busybox sh
docker run -it --rm --name busybox2 --network my-net busybox sh

查看容器信息


docker container ls
容器内ping测试容器是否互联

多个容器互联 推荐Docker Compose

配置DNS 宿主机DNS信息更新后,所有Docker容器的DNS配置通过/etc/resolv.conf立即更新

配置全部容器的DNS


vim /etc/docker/daemon.json 增加内容

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

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

容器互联

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

它会在源和接收容器之间创建一个隧道,接收容器可以看到源容器指定的信息。

自定义容器名

连接系统根据容器的名称执行,所以需要自定义一个较为简单容易区分的容器名。

自定义命名使用–name参数,这个在之前的文章中已经遇到过了:


docker run -d -p --name db mysql

容器的命名必须是唯一的。

执行docker run时,如果加上–rm参数,容器在终止后悔立即被删除,但是不能与-d参数一同使用。

容器互联

使用–link参数可以让容器间建立安全的连接进行交互。

下面是一个示例:

首先创建一个数据库的容器: