docker container port 如何映射到host
时间: 2023-05-08 17:56:06 浏览: 150
在Docker中,容器是在隔离的环境中运行的,它们只能在自己内部进行通信。但是,有时候需要将Docker容器的端口映射到宿主机上,从而可以通过宿主机访问容器里面的服务。
Docker提供了一个参数"-p"或"--publish",用于将容器的端口映射到主机上。其语法如下:
```
docker run -p [HOST_PORT]:[CONTAINER_PORT] [OPTIONS] IMAGE [COMMAND] [ARG...]
```
其中,[HOST_PORT]指的是主机上的端口号,[CONTAINER_PORT]指的是容器内部的端口号。例如,将容器的80端口映射到主机的8888端口上,可以这样运行容器:
```
docker run -p 8888:80 nginx
```
这样,在主机上就可以通过访问http://localhost:8888来访问容器里面的Nginx服务器了。
需要注意的是,如果在主机上已经存在了相同的端口号,那么会导致端口冲突,Docker将无法启动容器。此时,需要更改主机上的端口号,或者停止占用该端口的服务。
另外,还可以使用"-P"参数(注意是大写字母P),它会随机分配一个主机端口,将容器端口映射到该主机端口上。例如:
```
docker run -P nginx
```
这样,将会随机分配一个主机端口,例如32768端口,将容器的80端口映射到该主机端口上。因此,可以通过访问http://localhost:32768来访问容器里面的Nginx服务器。
相关问题
docker 查看端口映射
查看Docker容器的端口映射可以通过多种方法,最常用的是使用`docker ps`命令结合`docker port`命令,或者使用`docker inspect`命令来获取详细信息。下面是具体的方法:
1. 使用`docker ps`和`docker port`命令:
首先,使用`docker ps`命令查看当前运行的容器列表,找到你想要查看端口映射的容器ID或名称。然后,使用`docker port <container_id_or_name>`来查看该容器的端口映射情况。这个命令会显示出容器内部端口映射到宿主机的具体端口。
示例:
```
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
123456789abc my_container_image "docker-entrypoint.s…" 2 days ago Up 2 days 0.0.0.0:8080->80/tcp my_container
$ docker port 123456789abc
80/tcp -> 0.0.0.0:8080
```
在这个例子中,容器内部的80端口被映射到宿主机的8080端口。
2. 使用`docker inspect`命令:
另一种方式是使用`docker inspect`命令,它提供了关于容器的详细信息。通过指定容器ID或名称,可以获取一个JSON格式的输出,然后从中筛选出端口映射信息。
示例:
```
$ docker inspect 123456789abc | grep -i '80\|port'
"80/tcp": [],
"Gateway": "172.17.0.1",
"IPAddress": "172.17.0.2",
"MacAddress": "02:42:ac:11:00:02",
"PortainerPort": {
"HostIp": "0.0.0.0",
"HostPort": "9000"
},
```
这个命令的输出中包含了端口映射的信息,可以进一步解析JSON数据以提取端口映射详情。
docker 更改端口映射
要更改Docker容器的端口映射,您可以按照以下步骤操作:
1.首先,停止并删除当前正在运行的MySQL容器。您可以使用以下命令:
```
docker stop mysql-container
docker rm mysql-container
```
请确保将`mysql-container`替换为您实际运行的容器名称。
2.接下来,使用以下命令启动新的MySQL容器,并更改端口映射:
```
docker run --name mysql-container -e MYSQL_ROOT_PASSWORD=<your_password> -p <host_port>:<container_port> -d mysql
```
请将`<your_password>`替换为您希望设置的MySQL root用户的密码。将`<host_port>`替换为您希望将MySQL容器的端口映射到的宿主机端口号。将`<container_port>`替换为MySQL容器内部实际运行的端口号(默认为3306)。
例如,如果您希望将MySQL容器的端口映射到宿主机的端口号为3307,则可以使用以下命令:
```
docker run --name mysql-container -e MYSQL_ROOT_PASSWORD=<your_password> -p 3307:3306 -d mysql
```
这样,您就成功更改了MySQL容器的端口映射。现在,您可以使用新的端口号连接到MySQL容器。
阅读全文