前言

容器里面一般运行一些服务,要让外部访问就需要做一下端口映射。

端口映射

在 docker run 的时候,通过-P 或者-p 参数指定端口映射。

当使用 -P 标记时,Docker 会随机映射一个 49000~49900 的端口到内部容器开放的网络端口。

docker  run -itd   -P   nginx:latest
docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED              STATUS              PORTS                   NAMES
2e09b400374a        nginx               "nginx -g 'daemon of…"   About a minute ago   Up About a minute   0.0.0.0:32768->80/tcp   xenodochial_austin

使用 -p 就可以自己指定宿主机对应的端口

docker  run -itd  -p   80:80   nginx:latest
docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                   NAMES
590b534c6b35        nginx:latest        "nginx -g 'daemon of…"   14 seconds ago      Up 12 seconds       0.0.0.0:80->80/tcp      musing_lederberg

如果没有加 IP 地址,默认就是宿主机的所有端口,也可以指定监听的网口。

docker  run -itd  -p   127.0.0.1:80:80   nginx:latest
docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                  NAMES
4cbc57d0ea73        nginx               "nginx -g 'daemon of…"   8 seconds ago       Up 7 seconds        127.0.0.1:80->80/tcp   elated_shockley

也可以指定网口,但是不指定监听端口,让程序随机分配。

docker run -itd  -p 127.0.0.1::80  nginx
docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                     NAMES
16d980f54ef9        nginx               "nginx -g 'daemon of…"   3 seconds ago       Up 1 second         127.0.0.1:32768->80/tcp   wizardly_hodgkin

查看容器的端口映射

在 docker ps 上面可以看到映射情况,也可以使用 docker port 里面进行查看

docker port 16d980f54ef9
80/tcp -> 127.0.0.1:32768