📜  Docker-管理端口(1)

📅  最后修改于: 2023-12-03 15:00:30.626000             🧑  作者: Mango

Docker 管理端口

在 Docker 中,管理容器端口是非常重要的一件事情,因为端口对于一些服务的访问是必不可少的。

查看容器端口

我们可以使用 docker ps 命令来查看正在运行的容器列表,该命令会展示以下列出每个容器对外提供的端口:

$ docker ps
CONTAINER ID  IMAGE            COMMAND    CREATED        STATUS       PORTS                    NAMES
b5e4...a569  myimage:latest   "/app/my…"  20 hours ago  Up 20 hours  0.0.0.0:8080->80/tcp    mycontainer

在这里,我们可以看到容器的 ID 为 b5e4...a569 ,它对外提供的端口为 8080 ,将来我们就可以用 IP 地址加端口号的方式来访问容器。

EXPOSE 指令

Dockerfile 中的 EXPOSE 指令用于定义在运行时要在容器内听取的端口。它没有实际上将端口打开或映射到宿主机上,只是文档的作用。

例如,在 Dockerfile 中编写以下 EXPOSE 指令:

EXPOSE 8080

这意味着,我们在运行容器时,要使用 -p 选项来将容器内的端口映射到宿主机上:

$ docker run -p 80:8080 myimage

这里将容器内 8080 端口映射到了宿主机的 80 端口上,这样我们就可以通过浏览器访问容器:

http://localhost
-p 选项

Docker run 命令中的 -p 选项用于将容器内部的端口暴露给宿主机,其格式为:

$ docker run -p [宿主机端口]:[容器端口] [IMAGE]

例如:

$ docker run -p 8080:80 myimage

这里将容器内的 80 端口映射为宿主机的 8080 端口。

我们还可以启动容器并将其绑定到所有可用接口上,例如:

$ docker run -p 0.0.0.0:8080:80 myimage

在此配置中,除了宿主机 127.0.0.1 IP 以外,容器的 80 端口还绑定到了宿主机上的所有可用接口。这样就可以通过任何有公网 IP 地址的设备上的浏览器访问容器。

Docker Compose

我们还可以使用 Docker Compose 来管理多个容器并自动进行端口映射。

在以下的示例中,我们在 docker-compose.yml 文件中定义了两个容器: myappmydb 。这两个容器相互连接,并将 myapp 容器的 80 端口映射到宿主机的 8080 端口上:

version: '3'

services:
  myapp:
    image: myimage
    ports:
    - "8080:80"
    links:
    - mydb

  mydb:
    image: mydb

要启动多个容器,只需使用以下命令:

$ docker-compose up -d

使用 -d 参数可以将容器以后台方式运行。

总结

在 Docker 中,我们可以使用 docker ps 查看所有正在运行的容器的端口,并使用 -p 选项将容器内部的端口映射到宿主机上。我们还可以使用 Docker Compose 来管理多个容器并自动进行端口映射。