Docker网络
外部访问容器
在容器运行网络应用时,我们希望能够访问这些应用,可以在docker run
时加上-P
或-p
参数来指定端口映射。
使用-P
时,Docker会随机一个49000 ~ 49900
的端口到内部容器开放的端口(不推荐使用)。
-p
则是指定端口映射,主机的一个指定端口只可以绑定一个容器。
端口映射
-p
端口映射有三种格式:
ip:hostport:containerport #指定ip、指定宿主机port、指定容器port
ip::containerport #指定ip、未指定宿主机port(随机)、指定容器port
hostport:containerport #未指定ip、指定宿主机port、指定容器port
docker run -d -p 8080:80 <镜像>
默认本地的所有地址的8080端口映射到容器的80端口
docker run -d -p 127.0.0.1::80 <镜像>
本地的127.0.0.1地址的随机一个端口映射到容器的80端口
docker run -d -p 127.0.0.1:8080:80 <镜像>
本地的127.0.0.1地址8080端口映射到容器的80端口
注意:端口协议默认为tcp,可以在映射格式后加/udp
改为udp协议
查看容器端口映射配置
docker port <容器>
容器互联
新建网络
docker network create -d bridge <网络名>
-d
参数指定Docker网络类型,有bridge
、overlay
。
连接容器
运行两个容器并连接到你创建的网络:
docker run -it --name ubuntu1 --network <网络名> ubuntu bash
docker run -it --name ubuntu2 --network <网络名> ubuntu bash
试着在一个容器里ping一下另外一个容器,查看是否能成功连接。
如果有多个容器之间需要互相连接,推荐使用Docker Compose
,之后会讲到。