在这篇文章中,我们将为您详细介绍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)
- Docker 为镜像添加 SSH 服务
- docker 为镜像添加ssh服务-使用Dockerfile 创建
- Docker 使用 Dockerfile 创建支持 ssh 服务自启动的容器镜像
- Docker 定制ssh、java等基础服务镜像
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 服务
本教程基于 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 创建
首先,基于要添加内容的镜像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 服务自启动的容器镜像
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 的官方文档。
- sudo docker build -t centos6-ssh .
3. 此时就可以根据上面创建出来的 image 文件来创建自己的容器了,下面的命令会创建一个名字为 “mytest” 的容器。
- sudo docker run -d -P --name=mytest centos6-ssh
4. 有了容器,就可以测试我们的 ssh 服务了。
4.1 运行 “sudo docker inspect mytest”,查看当前启动容器 IP 地址,然后运行下面的命令来测试
- ssh admin@<容器 IP>
- ssh admin@<宿主机器 IP> -p < 宿主机器端口 >
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等基础服务镜像的相关信息,请在本站查询。
本文标签: