docker本身提供有attach
、exec
等方法进入容器中,本身却没有支持远程管理容器的方法。本文介绍为centos基础镜像添加SSH支持
手动构建
docker pull centos:7
:下载一个contos镜像docker run -it --name ssh_cenots7 docker.io/centos:7 bash
:运行并进入centos7容器yum install openssh-server
:下载并安装penssh-server
ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key;ssh-keygen -t ecdsa -f /etc/ssh/ssh_host_ecdsa_key;ssh-keygen -t ed25519 -f /etc/ssh/ssh_host_ed25519_key
:配置密钥文件vi /etc/pam.d/sshd
:注销pam_loginuid.so
,关闭pam登陆限制passwd root
:设置修改root密码或者添加账户
创建run.sh文件,并添加运行权限,chmod +x run.sh
#!/bin/bash
/usr/sbin/sshd -D
docker commit ssh_cenots7 sshd:centos7
:将容器制作为镜像docker run -p 2222:22 -d sshd:centos7 /run.sh
:运行sshd镜像,之后可以使用ip地址连接2222端口ssh进入docker容器
使用dockerfile构建
FROM centos:7
#作者信息
MAINTAINER shuangmu
RUN yum install -y openssh-server
RUN ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key;ssh-keygen -t ecdsa -f /etc/ssh/ssh_host_ecdsa_key;ssh-keygen -t ed25519 -f /etc/ssh/ssh_host_ed25519_key
#取消pam登陆限制
RUN sed -ri 's/session required pam_loginuid.so/#session required pam_loginuid.so/g' /etc/pam.d/sshd
#修改root密码
RUN echo "root:root" | chpasswd
COPY run.sh /run.sh
RUN chmod 755 /run.sh
#开放端口
EXPOSE 22
CMD ["/run.sh"]
使用docker build -t ssh:centos_dockerfile .
进行构建
来源:oschina
链接:https://my.oschina.net/u/4427008/blog/3163959