GVKun编程网logo

6.docker 制作 SSH 服务镜像(docker使用ssh)

3

在这篇文章中,我们将为您详细介绍6.docker制作SSH服务镜像的内容,并且讨论关于docker使用ssh的相关问题。此外,我们还会涉及一些关于Docker为镜像添加SSH服务、docker为镜像添

在这篇文章中,我们将为您详细介绍6.docker 制作 SSH 服务镜像的内容,并且讨论关于docker使用ssh的相关问题。此外,我们还会涉及一些关于Docker 为镜像添加 SSH 服务、docker 为镜像添加ssh服务-使用Dockerfile 创建、Docker 使用 Dockerfile 创建支持 ssh 服务自启动的容器镜像、Docker 定制ssh、java等基础服务镜像的知识,以帮助您更全面地了解这个主题。

本文目录一览:

6.docker 制作 SSH 服务镜像(docker使用ssh)

6.docker 制作 SSH 服务镜像(docker使用ssh)

* commit 方式安装 ssh 服务

1) 准备工作

docker run -it ubuntu:14.04 /bin/bash

2) 安装配置 ssh 服务

apt-get update;apt-get install openssh-server -y

apt-get install net-tools -y

mkdir -p /var/run/sshd

/usr/sbin/sshd -D &

sed -ri ''s/session    required     pam_loginuid.so/#session    required     pam_loginuid.so/g'' /etc/pam.d/sshd

#修改 SSH 服务的安全登录配置,取消 pam 登录限制

创建 /root/.ssh/authorized_keys 文件

mdir /root/.ssh

ssh-keygen -t rsa

cat /root/.ssh/id_rsa.pub > /root/.ssh/authorized_keys

vi /run.sh

#!/bin/bash

/usr/sbin/sshd -D

3. 保存镜像

docker commit fc1 sshd:ubuntu

4. 使用镜像

docker run -p 10222:22 -d sshd:ubuntu

 

* 使用 dockerfile 文件创建

mkdir sshd_ubuntu

cd sshd_ubuntu && touch Dockerfile run.sh

run.sh 脚本内容一致

ssh-keygen -t rsa

cat ~/.ssh/id_rsa.pub >  authorized_keys

Dockerfile 文件内容

FROM ubuntu:latest
MAINTAINER docker_user
RUN apt-get update
RUN apt-get install -y openssh-server -y
RUN mkdir -p /var/run/sshd
RUN mkdir -p /root/.ssh
RUN sed -ri ''s/session    required     pam_loginuid.so/#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"]

 

Docker 为镜像添加 SSH 服务

Docker 为镜像添加 SSH 服务

本教程基于 commit 命令创建

1 准备工作

使用 ubuntu:14.04 镜像创建一个容器

docker run -it ubuntu:14.04 /bin/bash

2 安装和配置 SSH 服务

在容器中更新 apt 缓存,安装 openssh-server

apt-get update;
apt-get install openssh-server -y;

创建目录 /var/run/sshd 并启动 SHH 服务

mkdir -p /var/run/sshd
/usr/sbin/sshd -D

contrl+c

输入 netstat -tunlp 命令查看端口 22 是否已经处于监听状态

修改 SSH 服务的安全登录配置,取消 pam 登录限制:

sed -r ''s/session required pam_loginuid.so/#session required pam_loginuid.so/g'' /etc/pam.d/sshd

在 root 用户目录下创建.ssh 目录,并复制需要登录的公钥信息(一般为本地主机用户目录下的.ssh/id_rsa.pub 文件)到 authorized_keys 文件中

mkdir root/.ssh
vi /root/.ssh/authorized_keys

创建自动启动 SSH 服务的可执行文件 run.sh , 并添加可执行权限

其中 run.sh 文件内容如下 

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

vi /run.sh
chmod +x run.sh

输入 exit 两次 退出容器

3 保存镜像

将退出的容器用 docker commit 命令保存为一个新的 ssh:ubuntu 镜像

其中 2bf 是退出的容器 ID 的前三位

docker commit 2bf sshd:ubuntu

使用 docker images 查看本地生成的新镜像 sshd:ubuntu

4 使用镜像

启动容器 并添加端口映射 10022 -->22,其中 10022 是宿主主机的端口,22 是容器的 SSH 服务监听端口

docker run -p 10022:22 -d sshd:ubuntu /run.sh

启动成功后,可以在宿主主机上可到容器运行的详细信息

确保宿主主机对外端口 10022 对外防火墙已经打开

在宿主主机(47.98.218.29 )或其他主机上可以通过 SSH 访问 10022 端口

ssh 47.98.218.29 -p 10022

 

docker 为镜像添加ssh服务-使用Dockerfile 创建

docker 为镜像添加ssh服务-使用Dockerfile 创建

首先,基于要添加内容的镜像ubuntu:18.04运行一个容器,

宿主机(下面步骤是在容器中创建的,应该在宿主机创建进行以下步骤)

一、创建一个工作目录

 二、创建Dockerfile 和脚本run.sh

编写脚本

vi 命令不起作用apt-get 也无效,报错unable to  locate package vim则需要更新一下软件源 apt-get update,然后在apt-get install vim

run.sh内容通上一篇

在宿主机通用生成rsa密钥信息,然后创建authoriized_keys

三、编写Dockerfile文件如下

 

四、创建镜像在sshd_ubuntu目录下,

docker builder -t sshd:dockerfile .

 出现Successfully buillt xx 构建成功

然后测试镜像,运行容器

运行成功,效果与commit命令创建的相同。

注意:authorized_keys文件的位置要通Dockerfile的相一致,否则复制文件找不到文件

 

Docker 使用 Dockerfile 创建支持 ssh 服务自启动的容器镜像

Docker 使用 Dockerfile 创建支持 ssh 服务自启动的容器镜像

原文链接:Docker 使用 Dockerfile 创建支持 ssh 服务自启动的容器镜像

1. 首先创建一个 Dockerfile 文件,文件内容如下

# 选择一个已有的os镜像作为基础  
    FROM centos:centos6  
       
    # 镜像的作者  
    MAINTAINER Fanbin Kong "kongxx@hotmail.com"  
       
    # 安装openssh-server和sudo软件包,并且将sshd的UsePAM参数设置成no  
    RUN yum install -y openssh-server sudo  
    RUN sed -i ''s/UsePAM yes/UsePAM no/g'' /etc/ssh/sshd_config  
       
    # 添加测试用户admin,密码admin,并且将此用户添加到sudoers里  
    RUN useradd admin  
    RUN echo "admin:admin" | chpasswd  
    RUN echo "admin   ALL=(ALL)       ALL" >> /etc/sudoers  
       
    # 下面这两句比较特殊,在centos6上必须要有,否则创建出来的容器sshd不能登录  
    RUN ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key  
    RUN ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key  
       
    # 启动sshd服务并且暴露22端口  
    RUN mkdir /var/run/sshd  
    EXPOSE 22  
    CMD ["/usr/sbin/sshd", "-D"]

Dockerfile 文件有自己的语法和命令,具体可以参考 Docker 的官方文档。

2. 有了 Dockerfile 文件以后,就可以根据 Dockerfile 来创建 image 文件了,在 Dockerfile 所在的目录下,运行下面的命令
  1. sudo docker build -t centos6-ssh .  
命令成功后,就会创建一个名字为 centos6-ssh 的 image,可以使用 “sudo docker images” 来查看。

3. 此时就可以根据上面创建出来的 image 文件来创建自己的容器了,下面的命令会创建一个名字为 “mytest” 的容器。

  1. sudo docker run -d -P --name=mytest centos6-ssh  

4. 有了容器,就可以测试我们的 ssh 服务了。

4.1 运行 “sudo docker inspect mytest”,查看当前启动容器 IP 地址,然后运行下面的命令来测试

  1. ssh admin@<容器 IP>  
4.2 另外,也可以通过 docker 的端口映射来访问, 使用 “sudo docker port mytest 22” 查看当前容器的 22 端口对应的宿主机器的端口,然后通过下面的命令来访问
  1. ssh admin@<宿主机器 IP> -p < 宿主机器端口 > 

Docker 定制ssh、java等基础服务镜像

Docker 定制ssh、java等基础服务镜像

1、启动一个基于centos镜像的容器

# docker run –p 10022:22  -ti centos bash
[root@f743588bbeef /]#

-p: 本地端口映射容器22端口,是为了后面启动ssh后测试能否正常登陆

 

2、在容器中安装openssh-server、java等

[root@f743588bbeef /]# yum install -y -q openssh-server java-1.7.0-openjdk net-tools

 

3、修改sshd_config配置文件

[root@f743588bbeef /]# ssh-keygen -q -t rsa -b 2048 -f /etc/ssh/ssh_host_rsa_key -N '''' 
[root@f743588bbeef /]# ssh-keygen -q -t ecdsa -f /etc/ssh/ssh_host_ecdsa_key -N '''' 
[root@f743588bbeef /]# ssh-keygen -t dsa -f /etc/ssh/ssh_host_ed25519_key  -N ''''  
[root@f743588bbeef /]# sed -i "s/UsePrivilegeSeparation.*/UsePrivilegeSeparation no/g" /etc/ssh/sshd_config 
[root@f743588bbeef /]# sed -i "s/UsePAM.*/UsePAM no/g" /etc/ssh/sshd_config

 

4、修改root密码

[root@f743588bbeef /]# echo ''root:root'' |chpasswd

 

5、启动openssh服务

[root@f743588bbeef /]# /usr/sbin/sshd
[root@f743588bbeef /]# netstat -ntlp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1/sshd              
tcp6       0      0 :::22

 

6、测试是否能登陆容器

# ssh -p 10022 192.168.62.200
The authenticity of host ''[192.168.62.200]:10022 ([192.168.62.200]:10022)'' can''t be established.
ECDSA key fingerprint is 7d:d5:8a:ea:5a:92:9e:3d:92:fe:dd:78:56:c2:d9:0e.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added ''[192.168.62.200]:10022'' (ECDSA) to the list of known hosts.
root@192.168.62.200''s password: 
[root@f743588bbeef ~]#

 

7、使用commit提交刚刚在容器内的所有操作

# docker commit f743588bbeef docker-ssh
sha256:4d8d27a47d3fd2750cde8f5d0ead3af6f90dd972969a3dca369b52d1e6130085
# docker images
REPOSITORY                          TAG                 IMAGE ID            CREATED             SIZE
docker-ssh                          latest              4d8d27a47d3f        7 seconds ago       192 MB

 

8、可以看到镜像列表中存在一个docker-ssh的镜像

# docker run -d --name docker-ssh -p 10022:22 docker-ssh
d986e0bdc2b1072b39248a691ba73f6b297842373ca7a55457f3cd8d7fa5c435

# docker ps -a
CONTAINER ID        IMAGE                          COMMAND                  CREATED             STATUS                      PORTS                                            NAMES
d986e0bdc2b1        docker-ssh                 "/usr/sbin/sshd -D"      3 seconds ago       Up 3 seconds                0.0.0.0:10022->22/tcp                            docker-ssh

# ssh -p 10022 192.168.62.200
The authenticity of host ''[192.168.62.200]:10022 ([192.168.62.200]:10022)'' can''t be established.
ECDSA key fingerprint is 7d:d5:8a:ea:5a:92:9e:3d:92:fe:dd:78:56:c2:d9:0e.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added ''[192.168.62.200]:10022'' (ECDSA) to the list of known hosts.
root@192.168.62.200''s password: 
[root@d986e0bdc2b1 ~]#

 

二、用Dockerfile来定制

mkdir ssh-java   ##创建一个空目录

cd ssh-java && vim Dockerfile

FROM centos
MAINTAINER <Email:kbsonlong@gmail.com Blog:www.along.party>
RUN yum install -y -q openssh-server java-1.7.0-openjdk net-tools 
RUN ssh-keygen -q -t rsa -b 2048 -f /etc/ssh/ssh_host_rsa_key -N '''' 
RUN ssh-keygen -q -t ecdsa -f /etc/ssh/ssh_host_ecdsa_key -N '''' 
RUN ssh-keygen -t dsa -f /etc/ssh/ssh_host_ed25519_key  -N ''''  
RUN sed -i "s/UsePrivilegeSeparation.*/UsePrivilegeSeparation no/g" /etc/ssh/sshd_config 
RUN sed -i "s/UsePAM.*/UsePAM no/g" /etc/ssh/sshd_config  
RUN echo ''root:change'' |chpasswd 
EXPOSE 22
CMD ["/usr/sbin/sshd", "-D"]

 

FROM、RUN、EXPOSE、CMD、MAINTAINER 都是Dockerfile的指令,Dockerfile指令更多详细介绍

FROM:指定基于哪个基础镜像

MAINTAINER : 维护者的信息

RUN: 在shell终端执行的命令

EXPOSE: 对外提供的端口

CMD: 启动容器是执行的命令,每个Dockerfile只能有一条CMD指令,如果存在多条,则执行最后一条。

 

构建镜像

#docker build -t ssh-java:1.7.1  .

 

查看构建的镜像

docker images|grep ssh-java
ssh-java                            1.7.1               71fc498380f5        25 minutes ago      282 MB

 

使用镜像启动

# docker ps -a
CONTAINER ID        IMAGE                          COMMAND                  CREATED             STATUS                      PORTS                                            NAMES
26b4dcc00246        ssh-java:1.7.1                 "/usr/sbin/sshd -D"      3 seconds ago       Up 2 seconds                0.0.0.0:32778->22/tcp                            ssh-java
# ssh -p 32778 192.168.62.200
The authenticity of host ''[192.168.62.200]:32778 ([192.168.62.200]:32778)'' can''t be established.
ECDSA key fingerprint is 7d:d5:8a:ea:5a:92:9e:3d:92:fe:dd:78:56:c2:d9:0e.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added ''[192.168.62.200]:32778'' (ECDSA) to the list of known hosts.
root@192.168.62.200''s password: 
[root@26b4dcc00246 ~]#

我们今天的关于6.docker 制作 SSH 服务镜像docker使用ssh的分享已经告一段落,感谢您的关注,如果您想了解更多关于Docker 为镜像添加 SSH 服务、docker 为镜像添加ssh服务-使用Dockerfile 创建、Docker 使用 Dockerfile 创建支持 ssh 服务自启动的容器镜像、Docker 定制ssh、java等基础服务镜像的相关信息,请在本站查询。

本文标签: