计算机网络/计算机科学与应用/系统/运维/开发

第十五、Docker 端口映射实现容器访问

一、docker run 启动容器

语法:docker run [ options ] IMAGE[:TAG | @DIGEST ] [COMMAND ] [ ARG... ]

选项:    

        -d  指定容器在后台运行

        -it 让容器能够与终端进行交互 (it一般一起使用)

        --name 指定容器的名称

        -p  将容器端口映射到主机上的端口 (格式: 宿主机端口:容器端口)

        -v 指定卷并将器挂载到容器中 (格式:<host目录>:<容器目录>)

        -P 随机端口映射,容器内部端口随机映射到主机的端口(49153起到65535)

        -e 设置环境变量




实例:启动一个mysql容器并映射端口号

docker run -itd --name mysql-stu -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql

    --name mysql-stu  指定容器名称mysql-stu 

    -p 3306:3306 映射容器服务的 3306 端口到宿主机的 3306 端口,外部主机可以直接通过 宿主机ip:3306 访问到 MySQL 的服务

    -e MYSQL_ROOT_PASSWORD=123456 配置环境变量 制定root用户密码为123456

    mysql 是镜像名


二、从外部访问容器应用

使用外部访问应用,通过-P或-p参数指定端口映射,-P 大写 随机映射一个49000~49900端口到内部容器开放的网络端口

-p小写 可以指定端口映射,格式:IP:HostPort:ContainerPort | IP::ContainerPort | HostPort:ContainerPort

    

提示:-p 的三种写法     

        docker run -p ip:主机端口:容器端口 

        docker run -p 主机端口:容器端口 (常用)

        docker run -p 容器端口 


docker  container  run  -it  -d  --name  起一个容器名  -p 本地端口:容器端口  容器名 

# 本地5000端口映射到容器5001端口
docker container run -it -d --name nginx_server1 -p 5000:5001 nginx 

# 通过多个-p绑定多个端口
docker container run --name webapp -d -p 5000:5000 -p 5001:5001  nginx 

# 映射指定地址的指定端口
docker  container  run --name webapp -d -p 127.0.0.1:5000:5000  nginx 


# 使用udp标记指定udp端口
docker container run --name webapp -d -p 127.0.0.1:5000:5000/udp  nginx


三、映射所有接口地址

四、映射到指定地址的任意端口

IP::ContainerPort 绑定localhost 任意端口到容器的5000端口,本地主机会自动分配一个端口

# 映射指定地址的任意端口
docker  container run --name webapp -d -p 127.0.0.1::5000 nginx

五、查看映射端口配置

image.png

docker

若无人替你披荆斩棘,那就独自前行栉风沐雨。

评论

^