容器互联
默认情况下,容器都是各自独立运行,与世隔绝。
Docker提供了一个名为docker0的虚拟网桥,它会为每个相连的容器分配一个虚拟子网。但是尽管容器都连在同一个虚拟网桥上,如果没有额外的配置,它们还是不能够相互通信。
要将容器链接在一起,须按照以下步骤:
- 运行你希望被链接的容器,并用--name选项为它命名。
- 运行第二个容器,在docker run命令里运用--link选项并指定第一个容器的名字将其链接到第一个容器上。
例如,我们启动一个mysql的容器并链接到它,我们可以执行:
- docker run –d --name db mysql
- docker run –it --link db:db --name second-container ubuntu sh
--link选项的值的格式为:想要链接到的容器的名字:为想要链接到的容器取的内部别名。别名可以任意取,主要用于网络配置的解析。
端口映射
当我们想通过主机访问在Docker容器上运行的服务时,我们可以使用docker run命令的-p选项来执行端口映射。
例如,我们要通过访问Docker主机上的8080端口,访问在容器中运行在80端口上的Web服务器,我们可以使用以下命令进行端口映射:
docker run -d -p 8080:80 --name webserver apache
我们可以通过下列命令查找映射的端口:
- docker port
- docker ps
我们还可以使用具有EXPOSE指令的Dockerfile和docker run命令的-P选项将容器上的端口公开到外面。 这将在后面的文章中讨论。
如果我们想要docker client连接到远程主机的docker daemon以便在本地执行远端docker命令,可以使用-H选项并跟上IP地址和端口。
Note:docker daemon默认端口为2375
docker -H 192.168.56.50:2375 –d &
或者我们可以设置DOCKER_HOST变量:
export DOCKER_HOST="tcp://192.168.56.50:2375"
将docker client重新连回本地:
export DOCKER_HOST=