Docker Desktop如何端口映射

Docker Desktop是一个用于在个人计算机上运行Docker容器的工具。通过端口映射,可以将Docker容器内部的端口映射到宿主机上的端口,从而实现容器与外部世界的通信。在本文中,我们将介绍如何在Docker Desktop中进行端口映射,并通过一个实际问题来演示如何解决。

实际问题

假设我们有一个基于Node.js的Web应用程序,它运行在Docker容器中,并监听在3000端口上。我们希望能够在本地浏览器中访问这个Web应用程序,但是由于Docker容器与宿主机隔离,我们无法直接访问容器内部的端口。

解决方案

我们可以通过端口映射的方式将容器内部的3000端口映射到宿主机上的一个空闲端口,比如8888端口。这样我们就可以通过访问localhost:8888来访问Web应用程序了。

步骤

  1. 在Docker Desktop中启动Node.js容器,并将容器内部的3000端口映射到宿主机上的8888端口。
docker run -d -p 8888:3000 nodejs-app
  1. 在浏览器中访问localhost:8888,即可查看Web应用程序。

示例

下面是一个简单的Node.js Web应用程序示例,我们将使用这个示例来演示端口映射的过程。

app.js

const http = require('http');

const server = http.createServer((req, res) => {
  res.statusCode = 200;
  res.setHeader('Content-Type', 'text/plain');
  res.end('Hello, Docker Desktop!');
});

server.listen(3000, '0.0.0.0', () => {
  console.log('Server running at 
});

Dockerfile

FROM node:14

WORKDIR /app

COPY package*.json ./

RUN npm install

COPY . .

EXPOSE 3000

CMD ["node", "app.js"]

执行

  1. 创建一个目录,并在该目录下创建app.jsDockerfile文件。
  2. 构建Docker镜像并运行容器。
docker build -t nodejs-app .
docker run -d -p 8888:3000 nodejs-app
  1. 在浏览器中访问localhost:8888,即可看到Hello, Docker Desktop!的消息。

旅行图

journey
    title Docker Desktop端口映射之旅
    section 启动Node.js容器
        Docker Desktop启动Node.js容器
    section 端口映射
        容器内部3000端口映射到8888端口
    section 访问Web应用程序
        在浏览器中访问localhost:8888

结论

通过端口映射,我们可以方便地访问Docker容器中运行的应用程序。在Docker Desktop中进行端口映射的步骤简单易行,并且能够帮助我们解决实际问题。希望本文对您有所帮助,谢谢阅读!