记录 Docker 外部访问的基本操作

1. 启动 docker 时挂载本地目录

# 将本地 D:/SDK 目录 挂载到 容器里的 /mnt/host 目录中
# 注意:-v /d/SDK:/mnt/host/ 必须放到 IMAGE_ID 前面才行
#      当容器 /mnt 下没有 host 目录时,它会自动创建 host
docker run -it -v /d/SDK:/mnt/host/ IMAGE_ID /bin/bash

2. 外部访问 docker 容器 (-p/-P)

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

# 创建容器
docker run -d -P training/webapp python app.py
# 查看映射
docker ps -l
  • 小写 -p
# 使用-p(小写)则可以指定要映射的IP和端口,
# 但是在一个指定端口上只可以绑定一个容器。
# 支持的格式有:
#   (A) hostPort:containerPort
#   (B) ip:hostPort:containerPort
#   (C) ip::containerPort
  • -p 映射所有接口地址:
# (A) hostPort:containerPort(映射所有接口地址)
# 将本地的 5000 端口映射到容器的 5000 端口,可以执行如下命令:
$ sudo docker run -d -p 5000:5000 training/webapp python app.py 
# 此时默认会绑定本地所有接口上的所有地址。
  • -p 映射指定地址的指定端口:
# (B) ip:hostPort:containerPort(映射指定地址的指定端口)
# 指定映射使用一个特定地址,比如 localhost 地址 127.0.0.1
$ sudo docker run -d -p 127.0.0.1:5000:5000 training/webapp python app.py
  • -p 映射指定地址的任意端口:
# (C) ip::containerPort(映射指定地址的任意端口)
# 绑定 localhost 的任意端口到容器的 5000 端口,本地主机会自动分配一个端口
sudo docker run -d -p 127.0.0.1::5000 training/webapp python app.py

# (D) 还可以使用 udp 标记来指定 udp 端口
$ sudo docker run -d -p 127.0.0.1:5000:5000/udp training/webapp python app.py

3. 无法连接 docker 内 SSH 解决方案

# (1)问题描述:
#      使用 docker run -it -p 5022:22 IMAGE_ID /bin/bash 创建容器
#      使用 ssh root@127.0.0.1:5022 连接 SSH 时报错:Could not resolve hostname
# (2)解决方法:
#      使用指定端口号登录(-l 表示 login_name,-p 表示端口号),如下:
#      ssh -l root 127.0.0.1 -p 5022
#      在弹出的提示框中 输入: no, 再重新连接
  • 6
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值