解决docker容器的访问问题,通过暴露22端口映射到宿主机端口,用ssh连接,可实现对容器内终端的可视化和编辑功能。
-
一、编写dockerfile
-
FROM ubuntu # Copy everything COPY . ./ EXPOSE 22
-
二、制作镜像
-
docker build -t ubt .
-
三、运行容器
-
docker run -it -p 8089:22 ubt
-
遇到一个问题:
-
ssh [email protected]:8089
ssh: Could not resolve hostname 127.0.0.1:8089: Name or service not known
-
根本就ping不通
-
ping 127.0.0.1:8089
ping: 127.0.0.1:8089: Name or service not known
-
这是因为docker里还没有安装ssh
-
四、docker内配置
-
apt-get update apt-get upgrade apt-get install -y openssh-server apt-get install -y openssh-server --fix-missing 选择地区:Asia Shanghai mkdir /var/run/sshd echo 'root:screencast' |chpasswd service ssh start
-
五、宿主机上连接
-
ssh [email protected] -p 8089
-
但是还有一个bug:
-
Permission denied, please try again.
-
六、docker里设置
-
^C
结束ssh -
apt-get install vim
-
vim /etc/ssh/sshd_config
-
在末尾加上
-
RSAAuthentication yes PermitRootLogin yes
-
修改root用户的密码
-
passwd root service ssh restart
-
七、成功
-
此时,再登录ssh
-
ssh [email protected] -p 8089