# 将本地 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
# 使用-P(大写)标记时,Docker会随机映射一个 49000~49900 的端口到内部容器开放的网络端口。
# 创建容器
docker run -d -P training/webapp python app.py
# 查看映射
docker ps -l
# 使用-p(小写)则可以指定要映射的IP和端口,
# 但是在一个指定端口上只可以绑定一个容器。
# 支持的格式有:
# (A) hostPort:containerPort
# (B) ip:hostPort:containerPort
# (C) ip::containerPort
# (A) hostPort:containerPort(映射所有接口地址)
# 将本地的 5000 端口映射到容器的 5000 端口,可以执行如下命令:
$ sudo docker run -d -p 5000:5000 training/webapp python app.py
# 此时默认会绑定本地所有接口上的所有地址。
# (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
# (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
# (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, 再重新连接