Docker实战(七)之为镜像添加SSH服务
1.基于commit命令创建 Docker提供了docker commit命令,支持用户提交自己对制定容器的修改,并生成新的镜像。命令格式为docker commit CONTAINER [REPOSITORY[:TAG]]。 (1)创建一个镜像 docker run -it ubuntu:14.04 /bin/bash 更新apt缓存,并安装openssh-server apt-get update apt-get install openssh-server -y (2)安装配置SSH服务 apt-get install openssh-server -y 如果需要正常启动SSH服务,则目录/var/run/sshd必须存在。手动创建它,并启动SSH服务: mkdir -p /var/run/sshd /usr/bin/sshd -D & netstat -tunlp (3)保存镜像 docker commit 1b902596b8b9 sshd:ubuntu (4)使用镜像 启动容器,并添加端口映射10022-->22。其中10022是宿主主机的端口,22是容器的SSH服务监听的端口: docker run -p 10022:22 -d sshd:ubuntu /run.sh 启动成功后,可以在宿主主机上看到容器运行的详细信息 在宿主主机或其他主机上,可以通过SSH访问10022端口来登录容器 ssh IP -p 10022 2.使用Dockerfile创建 (1)创建工作目录 mkdir sshd_ubuntu cd ssh_ubuntu 在该目录中创建Dockerfile和run.sh文件 ? (2)编写run.sh脚本和authorized_keys文件 run.sh脚本内容如下: #!/bin/bash
/usr/sbin/sshd -D
在宿主主机上生成SSH密钥,并创建authorized_keys文件: ssh-keygen -t rsa cat authorized_keys.pub > authorized_keys ? (3)编写Dockerfile文件 #设置继承镜像
FROM ubuntu:14.04
#提供一些作者信息
MAINTAINER docker_user(user@docer.com)
#下面开始运行更新命令
RUN apt-get update
#安装ssh服务
RUN apt-get install -y openssh-server
RUN mkdir -p /var/run/sshd
RUN mkdir -p /root/.ssh
#取消pam限制
RUN sed -ri 's/session required pam_loginuid.sh/#session required pam_loginuid.so/g' /etc/pam.d/sshd
#复制配置文件到相应位置,并赋予脚本可执行权限
ADD authorized_keys /root/.ssh/authorized_keys
ADD run.sh /run.sh
RUN chmod 755 /run.sh
#开放端口
EXPOSE 22
#设置自启动命令
CMD ["/run.sh"]
? (4)创建镜像 执行该命令即可创建镜像 docker build -t sshd:dockerfile . 记得必须要在Dockerfile文件存在的目录执行该命令否则会报找不到目录异常 docker images (5)测试镜像,运行容器 docker run -d -p 10122:22 sshd:dockerfile 在宿主主机新打开一个终端,连接到新建容器: ssh 192.168.126.130 -p 10122 ? (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- Angular 自定义模块以及配置路由实现模块懒加载
- twitter-bootstrap – Bootstrap tour需要清除缓存再次工作
- Angular 4手机号验证
- bash – Shell脚本和CRON问题
- Angular 2 – EXCEPTION:TypeError:无法读取属性’isSkip
- AngularJS $http自定义标头为所有请求
- bash:在多个其他字符串中查找字符串
- 从AngularJs http web api请求重定向到Identity Server登录
- 在Scala中初始化Array [BigInt]与Array [Int]
- Angular UI组件编写学习记录 - Button