在启动容器时,如果不指定对应参数,在容器外部是无法通过网络访问容器内的网络应用和服务的。

可以通过-P或-p参数指定端口映射。当使用-P时,Docker会随机映射49000~49900的端口到容器内部的开放端口。

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

可以通过docker logs命令查看应用信息

docker logs -f nostalgic_morse

-p可以指定要映射的端口,支持3种方式:

  • ip:hostPort:containerPort:映射指定地址的指定端口

  • ip::containerPort :映射到指定地址的任意端口

  • hostPort:containerPort:映射所有接口地址

将本地的5000端口映射到容器的5000端口

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

此时默认绑定本地所有接口上的所有地址,多次使用-p可以绑定多个端口。

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

仅映射localhost地址

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

绑定localhost的任意端口

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

可以使用docker port 命令查看当前的映射端口和地址

docker port nostalgic_morse 5000

容器内部的网络可以通过docker inspect 容器ID 查看。

容器通信

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

首先创建源容器

docker run -d --name dbtraining/postgres

查看容器的名字

docker inspect -f "{{ .Name }}" aed

连接到db容器

docker run -d -P --name web --link db:db training/webapp python app.py

--link参数格式为--link name:alias

Docker在两个互联的容器之间建立安全隧道,而且不用映射端口到宿主机。Docker将通过两种方式为容器公开连接信息

  • 环境变量

  • 更新/etc/hosts

其中DB_开头的环境变量即是db容器提供的,同时docker还将db容器的ip写入web容器的/etc/hosts。

results matching ""

    No results matching ""