docker 端口映射
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了docker 端口映射相关的知识,希望对你有一定的参考价值。
例一:容器里面安装了httpd服务,让外网如何访问?
首先使用centos镜像新建一个容器,然后在该容器中安装httpd服务,并启动
再把该容器导成一个新的镜像(centos-httpd),然后再使用新镜像创建容器,并指定端口映射
例子:docker commit -m "centos_httpd" -a "aminglinux" 313 centos_httpd:hu
说明:centos_httpd是容器的名字,hu是tag的名字 313 是容器的id
docker run -itd -p 5123:80 centos_httpd bash //-p 可以指定端口映射,本例中将容器的80端口映射为本地的5123端口 docker exec -it container_id bash
启动httpd: httpd -k start
编辑1.html: vi /var/www/html/1.html 随便写点东西
退出该容器:exit
测试: curl 127.0.0.1:5123/1.html (这个ip是宿主机的Ip)这样可以直接访问容器里面的网站
-p后面也支持IP:port:ip:port 的格式,比如
-p 127.0.0.1:8080:80
也可以不写本地的端口,只写ip,这样会随意分配一个端口
-p 127.0.0.1::80
例二:docker容器如何让外网通过ssh连接?
下面演示的系统是基于centos7容器
1 创建容器并登陆
docker run -it centos /bin/bash
2 安装sshd服务
yum install passwd openssl openssh-server -y
3启动sshd服务
/usr/sbin/sshd -D
报错如下:
Could not load host key: /etc/ssh/ssh_host_rsa_key Could not load host key: /etc/ssh/ssh_host_ecdsa_key Could not load host key: /etc/ssh/ssh_host_ed25519_key
解决办法:
ssh-keygen -q -t rsa -b 2048 -f /etc/ssh/ssh_host_rsa_key -N ‘‘ ssh-keygen -q -t ecdsa -f /etc/ssh/ssh_host_ecdsa_key -N ‘‘ ssh-keygen -t dsa -f /etc/ssh/ssh_host_ed25519_key -N ‘‘
4 编辑sshd配置文件
vim /etc/ssh/sshd_config
找到UsePAM yes这一段配置,将其改成UsePAM no
5 给容器root设置密码
passwd root输入两次密码
6、改完密码执行exit命令退出,这时会回到宿主机器的shell,执行下列命令将容器提交到镜像:
docker commit 7b7 hu/centos7-ssh ##7b7是刚才所操作的容器id
7473918b361eefd14548991654f99b8138bf203d686b46aa3ec7c25a6b7c0f20
运行 docker images 查看刚刚提交生成的镜像
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
hu/centos7-ssh latest 7473918b361e 18 seconds ago 279 MB
7 把新提交的镜像生成新的容器并映射端口
docker run -it -p 10022:22 hu/centos7-ssh /usr/sbin/sshd -D WARNING: ‘UsePAM no‘ is not supported in Red Hat Enterprise Linux and may cause several problems.
一直警告卡主不动,不过docker ps 查看已经映射成功
8 宿主机连接该容器
ssh [email protected] -p 10022 然后会提示你输入密码
也可以在终端软件连接该容器,ip写宿主机的ip,端口就是10022
本文出自 “渐行渐远” 博客,请务必保留此出处http://825536458.blog.51cto.com/4417836/1905561
以上是关于docker 端口映射的主要内容,如果未能解决你的问题,请参考以下文章