Docker学习:外部浏览器访问容器 | 容器访问容器 | 访问容器的常用5种方式 | -p -P 详解

作者:宇宙中心我曹县2024.01.30 01:14浏览量:13

简介:本文将详细介绍如何通过外部浏览器访问Docker容器,以及容器之间相互访问的常用方式,包括-p和-P参数的使用方法和注意事项。通过了解这些基础知识,您将能够更好地理解和应用Docker技术,提高您的开发、测试和部署效率。

一、外部浏览器访问容器
在Docker中,我们可以通过多种方式实现外部浏览器访问容器。其中最常见的一种方式是通过-P参数映射容器的端口到宿主机的随机端口。例如,运行一个Tomcat容器并映射其8080端口到宿主机的随机端口:

  1. docker run -d -P --name mytomcat tomcat:8.5.46-jdk8-openjdk

运行成功后,可以通过以下命令查看容器对外暴露的端口和宿主机的映射端口:

  1. docker ps

在上述命令中,我们可以看到宿主机的随机端口是49153,它映射到Tomcat容器的8080端口。因此,我们可以通过访问宿主机的IP地址加上映射的端口来访问容器内部的Tomcat服务:

  1. ```
  2. 二、容器访问容器
  3. 在Docker中,容器之间可以通过--link参数进行相互访问。例如,启动两个容器lcg1和lcg2,并将它们链接在一起:
  4. ```shell
  5. docker run -it --name lcg1 --link lcg2:lcgmycentos:1.3 /bin/bash

在lcg1容器中,我们可以直接通过lcg2或者lcgmycentos来访问lcg2容器。在lcg2容器中,我们也可以通过lcg1或者lcgmycentos来访问lcg1容器。需要注意的是,采用—link方式进行容器互访时,需要保证链接的两个容器都处于运行状态,否则将会出现连接失败的情况。此外,如果需要多个容器之间相互访问,建议使用Docker Compose或Docker Swarm等工具进行管理。
三、访问容器的常用5种方式

  1. 使用-p参数映射容器的端口到宿主机的固定端口。例如:docker run -p 8080:8080 …。这种方式需要预先知道宿主机的端口号,并且容器的端口号必须与宿主机的端口号一致。
  2. 使用-P参数映射容器的端口到宿主机的随机端口。如文章开头所示的例子。这种方式可以让宿主机的随机端口映射到容器的固定端口上,无需预先知道宿主机的端口号。
  3. 使用—link参数进行容器之间的互访。如文章中所述的例子。需要注意的是,这种方式需要保证链接的两个容器都处于运行状态,并且链接名不能重复。
  4. 使用Docker Compose或Docker Swarm等工具进行多个容器的管理和互访。这些工具可以方便地实现多个容器的协同工作,并提供了更多的功能和便利性。
  5. 通过SSH或其他远程访问工具进入容器内部,然后直接使用容器的IP地址和端口号进行访问。这种方式适用于远程管理或调试场景,但需要注意安全性问题。
    四、-p和-P详解
    -p和-P参数都是用于将容器的端口映射到宿主机的端口上,但它们的使用方式和适用场景有所不同。-p参数需要指定宿主机的端口号和容器的端口号,而-P参数会让宿主机自动分配一个随机端口号映射到容器的固定端口号上。因此,-p参数适用于已知宿主机端口号的情况,而-P参数适用于无法预先知道宿主机端口号或者希望使用随机端口的情况。在使用-P参数时,可以通过docker ps命令查看宿主机随机端口和容器的对应关系。同时,需要注意的是,由于-P参数会将容器的所有端口都映射到宿主机的随机端口上,因此如果容器中有多个服务监听在同一个端口上,可能会导致冲突或无法正常访问。此时需要使用-p参数进行精确映射或者对服务进行相应配置。总之,在使用Docker时,合理选择-p和-P参数可以更好地平衡容器的安全性和易用性,提高开发、测试和部署效率。