容器技术 Docker 端口转发

介绍

在容器化应用部署中,常常需要将容器内部服务暴露给外部网络访问。Docker 提供了端口转发功能,可以将容器内部的端口映射到 Docker 主机的端口上,从而实现容器服务的访问。

端口转发的作用

端口转发能够让外部请求通过 Docker 主机访问容器内部的服务。这样就可以实现容器内部服务的网络访问,比如访问 Web 应用、数据库等。

Docker 端口转发示例

下面是一个使用 Docker 端口转发的示例,假设我们有一个 Nginx 容器,需要将容器内部的 80 端口映射到 Docker 主机的 8080 端口上。

  1. 首先,我们需要创建一个 Dockerfile 来构建 Nginx 容器。
FROM nginx:latest
COPY nginx.conf /etc/nginx/nginx.conf
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]
  1. 创建一个 nginx.conf 文件,用于配置 Nginx 服务器。
server {
    listen 80;
    server_name localhost;
    
    location / {
        root /usr/share/nginx/html;
        index index.html;
    }
}
  1. 构建 Docker 镜像并运行容器。
$ docker build -t mynginx .
$ docker run -d -p 8080:80 mynginx

其中,-p 8080:80 参数表示将容器内部的 80 端口映射到 Docker 主机的 8080 端口上。

  1. 现在可以通过访问 http://localhost:8080 来访问 Nginx 服务器。

过程示意图

journey
    title Docker 端口转发示意图
    
    section 容器启动
    Start(Start) -->|1. 构建镜像| Build(Build Docker Image)
    Build -->|2. 运行容器| Run(Run Docker Container)
    
    section 端口转发
    Run -->|3. 端口转发| Forward(Port Forwarding)
    Forward -->|4. 访问服务| Access(Access Services)
    
    section 服务访问
    Access --> Stop(Stop)

状态图

stateDiagram
    [*] --> Stopped
    Stopped --> Running : start
    Running --> Stopped : stop
    Running --> Running : restart

总结

本文介绍了容器技术 Docker 中的端口转发功能。通过将容器内部的端口映射到 Docker 主机上,可以实现容器服务的访问。我们以 Nginx 为例,演示了如何使用 Docker 端口转发来访问容器内部的服务。希望本文能帮助读者更好地理解和应用 Docker 端口转发的功能。