资讯专栏INFORMATION COLUMN

Docker入门- 为镜像添加SSH服务(CentOS 7)

IT那活儿 / 927人阅读
Docker入门- 为镜像添加SSH服务(CentOS 7)

点击上方“IT那活儿”公众号,关注后了解更多内容,不管IT什么活儿,干就完了!!!

方式1:基于commit命令创建新镜像

1. 使用ubuntu:latest镜像,创建容器
docker run -ti ubuntu
2. 进入容器之后
## 使用命令apt-get update更新软件源信息:
apt-get update
## 安装和配置SSH:
apt-get install openssh-server
## 创建/var/run/sshd目录,并启动SSH服务:
mkdir -p /var/run/sshd
/usr/sbin/sshd -D &
## 修改SSH安全登录配置,取消pam登录限制:
sed -ri s/session required pam_loginuid.so/#session required pam_loginuid.so/g /etc/pam.d/sshd
## 创建/root/.ssh目录,并添加本地或者其他主机的公钥.ssh/id_rsa.pub信息(在本地或其他主机执行ssh-keygen -t rsa命令生成)到/root/.ssh/authorized_keys文件中。
mkdir /root/.ssh
vi /root/.ssh/authorized_keys
## 创建启动SSH服务的脚本runsshd.sh,并添加可执行权限:
vi /runsshd.sh
#!/bin/bash
/usr/sbin/sshd -D
## 最后退出容器,exit。
3. 使用docker commit CONTAINER [REPOSITORY[:TAG]] 命令创建新镜像
docker commit d9b410500c53 ubuntu:sshd
4. 使用新镜像ubuntu:sshd,创建容器,并把容器的SSH服务的22端口映射到本地主机的10022端口上
docker run -d -p 10022:22 ubuntu:sshd /runsshd.sh
5. 在本地或者其他主机就可以通过SSH访问10022端口来登录新创建的容器
比如:本地主机IP为192.168.44.81
ssh root@192.168.44.81 -p 10022

可以看到已经登录到新创建的容器,并可以执行命令。

方式2:使用Dockerfile文件创建新镜像

1. 在本地主机创建一个新目录ubuntu_sshd
mkdir ubuntu_sshd
2. 进入ubuntu_sshd目录,并编写runsshd.sh脚本和authorized_keys文件
vi runsshd.sh
#!/bin/bash
/usr/sbin/sshd -D
把本地或者其他主机的公钥.ssh/id_rsa.pub信息(在本地或其他主机执行ssh-keygen -t rsa命令生成)到authorized_keys文件中。
cat ~/.ssh/id_rsa.pub > authorized_keys
3. 编写Dockerfile文件
vi Dockerfile
# 指定基础镜像:
FROM ubuntu:latest
# 作者信息:
MAINTAINER suncc (xxxx@163.com)
# 安装SSH服务:
RUN apt-get update
RUN apt-get install openssh-server -y
RUN mkdir -p /var/run/sshd
RUN mkdir /root/.ssh
# 修改SSH安全登录配置,取消pam登录限制:
RUN sed -ri s/session required pam_loginuid.so/#session required pam_loginuid.so/g /etc/pam.d/sshd
# 复制文件到相应位置:
ADD authorized_keys /root/.ssh/.
ADD runsshd.sh /.
RUN chmod 755 /runsshd.sh
# 开放端口:
EXPOSE 22
# 设置启动容器时默认执行的命令:
CMD ["/runsshd.sh"]
4. 使用docker build -t [REPOSITORY[:TAG]] PATH 命令创建新镜像
……
5. 查看创建的新镜像
6. 使用新镜像ubuntu:sshdv2.0,创建容器,并把容器的SSH服务的22端口映射到本地主机的11022端口上
docker run -d -p 11022:22 ubuntu:sshdv2.0
成功创建容器:ff90b9d48413
7. 在本地或者其他主机就可以通过SSH访问11022端口来登录新创建的容器
比如:本地主机IP为192.168.44.81
ssh root@192.168.44.81 -p 11022
可以看到已经登录到新创建的容器,并可以执行命令。
通过上文描述的两种方式可以为镜像添加SSH服务。



本文作者:孙长城(上海新炬王翦团队)

本文来源:“IT那活儿”公众号

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/129173.html

相关文章

  • docker入门实战笔记

    摘要:创建用户组并添加用户。默认情况下是过滤掉所有的入站规则。初始命令表示一旦容器启动,需要运行的命令,此时使用,表示什么也不做,只需进入命令行即可。1.什么是docker  docker翻译为搬运工,在这里应该可以理解为搬运应用的工具,也就是云.先了解其运用场景之后更容易对他形成深刻理解.  Docker提供了一种可移植的配置标准化机制,允许你一致性地在不同的机器上运行同一个Container;...

    Tecode 评论0 收藏0
  • Docker创建的集群下使用ansible部署hadoop

    摘要:创建的集群下使用部署基础环境关键词集群架构集群包含台虚拟主机,采用创建容器的方式创建,无需创建多台虚拟机,简单方便。 Docker创建的集群下使用ansible部署hadoop 基础环境 MBP, Palallels Desktop, Centos7 关键词 docker, ansible, hadoop 集群架构 集群包含4台虚拟主机,采用Docker创建容器的方式创建,无需创建多台...

    gself 评论0 收藏0
  • 利用K8S技术栈打造个人私有云(连载之:基础镜像制作与实验)

    摘要:因此本篇博文将讲解如何在本地构建一个带组件的底包镜像并上传到上供下载使用。 showImg(https://segmentfault.com/img/remote/1460000013318761); 【利用K8S技术栈打造个人私有云系列文章目录】 利用K8S技术栈打造个人私有云(连载之:初章) 利用K8S技术栈打造个人私有云(连载之:K8S集群搭建) 利用K8S技术栈打造个人私...

    tabalt 评论0 收藏0
  • 利用K8S技术栈打造个人私有云(连载之:基础镜像制作与实验)

    摘要:因此本篇博文将讲解如何在本地构建一个带组件的底包镜像并上传到上供下载使用。 showImg(https://segmentfault.com/img/remote/1460000013318761); 【利用K8S技术栈打造个人私有云系列文章目录】 利用K8S技术栈打造个人私有云(连载之:初章) 利用K8S技术栈打造个人私有云(连载之:K8S集群搭建) 利用K8S技术栈打造个人私...

    hot_pot_Leo 评论0 收藏0
  • Docker+Jenkins+Nodejs+Git+Webhook自动部署

    1.准备环境 一台有网络的Linux 服务器 Docker rpm安装包,依赖包 libcgroup jdk1.7 OR 1.8环境下载 Jenkins WAR包下载 NodeJs 源码包下载 依赖下载地址: https://pkgs.org/download/ https://mirrors.aliyun.com/centos/7/os/x86_64/Packages/ 2.安装D...

    tuomao 评论0 收藏0

发表评论

0条评论

IT那活儿

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<