记录 Docker 外部访问的基本操作
2023-12-28 13:08:17
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
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!