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

发布时间:2023年12月28日

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, 再重新连接
文章来源:https://blog.csdn.net/wxl5018/article/details/135154589
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。