为Docker镜像添加SSH服务

一、基于commit命令创建

  1、 首先下载镜像

$ docker run -it ubuntu:16.04 /bin/bash

  2、 安装SSH服务

#更新apt缓存
[email protected]:/# apt-get update

[email protected]:/# apt-get install openssh-server -y

  3、 配置SSH服务:如果需要正常启动SSH服务,则需手动创建/var/run/sshd目录,并启动ssh服务。

    1) 创建目录

[email protected]:/# mkdir -p /var/run/sshd

    

    2) 启动ssh服务

[email protected]:/# /usr/sbin/sshd -D &

    3) 修改SSH服务的安全登录设置,取消pam登录限制

[email protected]:/# sed -ri ‘s/session required pam_loginuid.so/#session required pam_loginuid.so/g‘ /etc/pam.d/sshd

    4) 在/root下创建.ssh目录

[email protected]:/# mkdir /root/.ssh

    5) 创建文件/root/.ssh/authorized

[email protected]:/# vim /root/.ssh/authorized

    6) 将宿主机的.ssh目录下的id_rsa.pub内容全部copy到authorizedj里

  

  4、 在docker镜像里添加运行脚本run.sh

[email protected]:/# vim run.sh

【/run.sh】

#!/bin/bash
/usr/sbin/sshd -D &
# 退出镜像
[email protected]:/# exit

  5、 用docker commit命令保存镜像

# 查看刚刚运行的镜像的CONTAINER ID,复制一会有用
$ docker ps -a

# 5ef1d3163265为刚刚运行的ubuntu的CONTAINER ID
$ docker commit 5ef1d3163265  sshd:ubuntu

# 查看镜像
$ docker images

  6、 使用刚刚创建的镜像sshd:ubuntu

# 启动容器,并添加端口映射,6666是宿主机的端口,22是窗口的端口
$ docker run -p 6666:22 -d sshd:ubuntu /run.sh

# 查看容器运行情况
$ docker ps

  7、 宿主机连接容器

#采用以下两个方法都可以连接
$ ssh [email protected] -p 6666
$ ssh 172.17.0.2 -p 6666         //此处的IP为容器IP,查看方法: docker inspect + 容器ID | grep IP

二、 使用Dockerfile创建基于带有ssh的镜像

  1、 创建Dockerfile根目录

$ mkdir sshd_ubuntu
$ cd sshd_ubuntu

  2、 编写run.sh脚本

$ vim run.sh

【run.sh】

#!.bin/bash
/usr/sbin/sshd -D

  3、 创建authorized_keys文件

$ ssh-keygen
$ cat ~/.ssh/id_rsa.pub >authorized_keys

  4、 复制/var/pam.d/sshd到Dockerfile目录下

$ sudo cp /var/pam.d/sshd  ./
$ sudo vim sshd

# 注释以下一行
# session        required        pam_loginuid.so

  5、 编写Dockerfile

#设置继承镜像
FROM ubuntu:latest

#作者信息
MAINTERNET Foo Bar [email protected]

#安装apt-utils和ssh
RUN apt-get update
RUN apt-get install -y apt-utils
RUN apt-get update
RUN apt-get install -y openssh-server
RUN mkdir -p /var/run/sshd              //容器中需有此目录后SSH服务方能运行
RUN mkdir /run/.ssh

#复制文件到相应的目录
ADD sshd /var/pam.d/sshd
ADD authorized_keys /root/.ssh
RUN chmod 755 /run.sh

# 开放端口
EXPOSE 22

#设置自启动命令
CMD 【“/run.sh”】

  6、 创建镜像

[email protected]:~/$ cd sshd_ubuntu
[email protected]:~/sshd_ubuntu$ docker build -t sshd:dockerfile .

  7、 查看镜像

$ docker images

  8、 测试镜像,运行容器

#启动镜像,并映射窗口的22端口到本地的6666端口
$ docker run -d -p 6666:22

#查看镜像
$ docker images

  9、 在宿主机连接到新建的容器

$ ssh [email protected] -p 6666

时间: 2024-08-27 15:53:53

为Docker镜像添加SSH服务的相关文章

为镜像添加ssh服务

一:基于docker commit创建 1.创建一个容器并启动 docker run -it ubuntu:14.04 /bin/bash 2,安装和配置 apt-get install openssh-server -y 如果需要正常启动ssh服务.需要吃创建/var/run/sshd  手动创建 mkdir -p /var/run/sshd /usr/sbin/sshd -D & 查看容器的端口有没有被监听 netstat -tunple 修改ssh服务.取消pam登录 sed -ri 's

Docker-为镜像添加SSH服务

进入容器的办法有很多,包括exec.attach等命令,但是这些命令都无法解决远程管理容器的问题,因此,需要SSH的支持 基于commit命令创建 docker提供了docker commit命令,支持用户提交自己对指定容器的修改,并生成新的镜像.命令格式为docker commit CONTAINER [REPOSITORY[:TAG]] Centos6开启SSH服务 启动容器 FengZhen$ docker run -it --name centos6 centos:6 /bin/bash

记一次为镜像添加SSH服务引发的问题

2020年1月28日下午风和日丽没有太阳,我启动了一个ubuntu容器按书上所写给他配置更新源. 发现没有vi命令,直接使用echo导入源到/etc/apt/sources.list文件中 echo "deb http://cn.archive.ubuntu.com/ubuntu/ xenial main restricted universe multiverse" > /etc/apt/sources.list echo "deb http://cn.archive

docker为centos镜像添加sshd服务

使用centos镜像添加sshd服务,并用xshell进行连接.1.拉取centos镜像 [[email protected] ~]# docker pull centosUsing default tag: latestlatest: Pulling from library/centosa02a4930cb5d: Pull complete Digest: sha256:184e5f35598e333bfa7de10d8fb1cebb5ee4df5bc0f970bf2b1e7c7345136

Docker 镜像添加模块

Docker 镜像添加模块 1. 使用root用户进入一个新容器,不要用 --rm .否则退出容器的时候,容器没有了 docker run --user 0 -it --name superman testdockerfilebox/test_cpu:latest bash 2. 在容器中添加你要的功能,然后退出容器 apt install ... npm install -g n pip3 install ... 3. commit 刚才操作的容器成 image (testdockerfile

Docker创建支持ssh服务的容器和镜像

Dockerfile 支持系统启动 运行ssh 服务 原文链接:http://blog.csdn.net/kongxx/article/details/38395305 # 选择一个已有的os镜像作为基础 FROM centos:centos6 # 镜像的作者 MAINTAINER Fanbin Kong "[email protected]" # 安装openssh-server和sudo软件包,并且将sshd的UsePAM参数设置成no RUN yum install -y ope

docker创建支持ssh服务的centos镜像

以centos为基础,目的使用ssh服务远程连接docker容器 环境:宿主机centos7,直接搜索docker的centos镜像,下载最新版本 1.先按照docker:yum install -y epel-release yum install -y docker 2.启动docker: systemctl start docker.service 3.使用ps查看docker是否启动 ps aux |grep docker 4.下载centos的docker镜像 docker pull

docker中安装ssh服务

系统:Debian Docker 目标:在docker(debian系统)中安装ssh服务,实现远程登陆和控制docker 步骤: 初始状态:通过docker pull debian得到的一个debian的docker 1,docker run -i -t debian /bin/bash 登录到docker的shell界面,方便之后的操作 2,apt-get update: docker默认root登录,apt-get install 几乎不能用,因为需要更新一下源(可能是为了更轻量) 3,a

构建自定义Docker镜像使用ApacheHttp服务的代理功能

1,修改httpd.conf 以下两行前的注释字符 # 去掉: #LoadModule proxy_module modules/mod_proxy.so #LoadModule proxy_http_module modules/mod_proxy_http.so 2,添加代理规则 在httpd.conf 文件的最后加上转发规则 例如: ProxyPass /baidu http://www.baidu.com ProxyPassReverse /baidu http://www.baidu.