Docker 学习笔记之端口映射与容器互联

in Linux with 0 comment

1、端口映射实现容器访问

1.1从外部访问容器应用

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

当容器中运行一些网络应用,要让外部访问这个应用时,可以通过-p或-P参数开指定端口映射,-P标记是,Docker会随机映射一个49000~49900的端口到容器内部开发的网络端口:

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

docker ps -l

image20200418234329409.png

docker run -d -p 6379:6379 --name redis redis

1.2映射所有接口地址

使用HostPort: ContainerPort格式本地的6379端口映射到容器的6379端口,
可以执行如下命令:

docker run -d -p 6379:6379 --name redis redis

此时默认会绑定本地所有接口上的所有地址。多次使用-p标记可以绑定多个端口。例如:

docker run -d -p 6379:6379 -p 500:500 --name redis redis

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

可以使用IP:HostPart: ContainerPort格式指定映射使用一个特定地址,比如
localhost地址127.0.0.1:

docker run -d -p 127.0.0.1:5000:5000 redis

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

使用IP::ContainerPort绑定localhost的任意端口到容器的5000端口,本地主机
会自动分配一个端口:

docker run -d -p 127.0.0.1::5000 redis

还可以使用udp标记来指定udp端口:

docker run -d -p 127.0.0.1:5000:5000/udp redis

1.5查看映射端口配置

使用docker port 来查看当前映射的端口配置,也可以查看到绑定的地址

docker port redis 5000

容器有自己的内部网络和IP地址,使用docker [container) inspect+容器
ID可以获取容器的具体信息。

image20200419000216125.png

2、互联机制实现便捷互访

2.1自定义容器名

docker … --name [Container_name]

也可以使用docker [container] inspect 来查看容器的名字

docker inspect -f “{}” 6725a7a5fc7a

在执行docker run的时候如果添加 --rm参数,则容器在终止后会立即删除。注意--rm不能和-d 参数同时使用

2.2容器互联

使用--link参数可以实现容器之间安全地进行交互

docker run -d --name redis

然后创建一个新的web容器,并将它连接到redis容器

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

此时,redis容器和web容器建立互联关系

--link参数的格式为--link name:alias,其中name是要连接的容器的名称,alias是别名

image20200419003853957.png