docker-端口映射与容器互联

端口映射

当容器中运行一些应用,可以通过-p ,-P 参数来指定端口映射
使用-P时,Docker会随机映射一个49000~49900的端口到内部容器开放的端口
如果一个镜像中没有可以对外提供的服务,使用-P参数基于该镜像启动容器后,不会有端口的映射

1
2
例如:docker run -idt -P centos /bin/bash  
docker run -idt -P httpd /bin/bash

另外几种查看端口映射的方法

1
2
docker  port  ID
docker inspect -f {{.NetworkSettings.Ports}} ID

使用-p(小写)可以指定要映射的端口使用HostPort : ContainPort将本地的5000映射到容器的5000,会默认绑定本地所有接口上的所有地址

可以多次使用-p参数绑定多个端口

1
2
docker run -d -p 80:80 httpd 
docker run -d -p 80:80 -p 8080:8080 httpd

使用IP:HostPort:ContainPort格式指定映射使用一个特定地址

1
docker run -d -p 127.0.0.1:80:80 httpd

使用IP::ContainerPort 映射到指定地址的任意端口

1
2
3
4
5
docker run -d -p 127.0.0.1::80 httpd

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

docker run -d -p 127.0.0.1:80:80/udp httpd

容器互联

创建一个数据库容器

1
docker run -idt --name db postgres
1
docker run -idt -P --name web --link db:db httpd /bin/bash

使用–link 选项,参数格式为name:alias 即要连接的容器名称 : 这个连接的别名

再建立一个web2容器,同web的配置,查看环境变量,可以看到与db容器的连接,以DB_开头的环境变量都是提供web连接db的

进入到web容器中查看/etc/hosts .可以看到db容器的信息

在web容器中安装ping命令

1
2
apt-get update 更新源
apt-get install inetutils-ping
------ end ------
0%