基于alpine用dockerfile创建的ssh镜像

1、下载alpine镜像

[[email protected] ~]# docker pull alpine
Using default tag: latest
Trying to pull repository docker.io/library/alpine ...
latest: Pulling from docker.io/library/alpine
4fe2ade4980c: Pull complete
Digest: sha256:621c2f39f8133acb8e64023a94dbdf0d5ca81896102b9e57c0dc184cadaf5528
Status: Downloaded newer image for docker.io/alpine:latest
[[email protected] ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
docker.io/alpine    latest              196d12cf6ab1        3 weeks ago         4.41 MB

2、编写dockerfile

2.1.创建一个工作目录

[[email protected] ~]# cd /opt/
[[email protected] opt]# mkdir alpine_ssh && cd alpine_ssh && touch Dockerfile

[[email protected] alpine_ssh]# ll
总用量 4
-rw-r--r-- 1 root root 654 10月  3 23:21 Dockerfile

2.2.编写Dockerfile

# 指定创建的基础镜像
FROM alpine

# 作者描述信息
MAINTAINER alpine_sshd ([email protected])

# 替换阿里云的源
RUN echo "http://mirrors.aliyun.com/alpine/latest-stable/main/" > /etc/apk/repositories
RUN echo "http://mirrors.aliyun.com/alpine/latest-stable/community/" >> /etc/apk/repositories

# 更新源、安装openssh 并修改配置文件和生成key
RUN apk update &&     apk add --no-cache openssh-server &&     sed -i "s/#PermitRootLogin.*/PermitRootLogin yes/g" /etc/ssh/sshd_config &&     ssh-keygen -t rsa -P "" -f /etc/ssh/ssh_host_rsa_key &&     ssh-keygen -t ecdsa -P "" -f /etc/ssh/ssh_host_ecdsa_key &&     ssh-keygen -t ed25519 -P "" -f /etc/ssh/ssh_host_ed25519_key &&     echo "root:admin" | chpasswd

# 开放22端口
EXPOSE 22

# 执行ssh启动命令
CMD ["/usr/sbin/sshd", "-D"]

  

2.3.创建镜像

# 在dockerfile所在的目录下
[[email protected] alpine_ssh]# pwd
/opt/alpine_ssh
[[email protected] alpine_ssh]# docker build -t alpine:sshd .

  

3、创建容器测试

  创建容器

[[email protected] alpine_ssh]# docker run -itd -p 10022:22 --name alpine_ssh_v1 alpine:sshd
[[email protected] alpine_ssh]# docker ps
CONTAINER ID        IMAGE               COMMAND               CREATED             STATUS              PORTS                   NAMES
b353f5f3b703        alpine:sshd         "/usr/sbin/sshd -D"   17 minutes ago      Up 17 minutes       0.0.0.0:10022->22/tcp   alpine_ssh_v1

  测试

[[email protected] alpine_ssh]# ssh [email protected] -p10022
[email protected]‘s password:
Welcome to Alpine!

The Alpine Wiki contains a large amount of how-to guides and general
information about administrating Alpine systems.
See <http://wiki.alpinelinux.org>.

You can setup the system with the command: setup-alpine

You may change this message by editing /etc/motd.

b353f5f3b703:~# 

4、问题总结

  这些都是我在手动测试的时候遇见的,已经在写Dockerfile的时候加进去了处理方法

1. apk add --no-cache openssh-server   # 安装openssh的问题

/ # apk add --no-cache openssh-server
fetch http://dl-cdn.alpinelinux.org/alpine/v3.8/main/x86_64/APKINDEX.tar.gz
fetch http://dl-cdn.alpinelinux.org/alpine/v3.8/community/x86_64/APKINDEX.tar.gz
(1/3) Installing openssh-keygen (7.7_p1-r2)
ERROR: openssh-keygen-7.7_p1-r2: package mentioned in index not found (try ‘apk update‘)
(2/3) Installing openssh-server-common (7.7_p1-r2)
(3/3) Installing openssh-server (7.7_p1-r2)
ERROR: openssh-server-7.7_p1-r2: package mentioned in index not found (try ‘apk update‘)
2 errors; 4 MiB in 14 packages

原因是:提示源没有这个openssh的包

解决方式:
在dockerfile中改为国内的源
http://mirrors.aliyun.com/alpine/latest-stable/main/
http://mirrors.aliyun.com/alpine/latest-stable/community/

创建容器文件修改
[[email protected] ~]# docker run -it alpine
/ # vi /etc/apk/repositories
http://mirrors.aliyun.com/alpine/latest-stable/main/
http://mirrors.aliyun.com/alpine/latest-stable/community/

#http://dl-cdn.alpinelinux.org/alpine/v3.8/main
#http://dl-cdn.alpinelinux.org/alpine/v3.8/community

# 注释或者删除原来的默认源,添加阿里云的源,然后执行apk update,在进行安装就OK了

2、ssh 启动问题
/ # /etc/init.d/sshd start
/bin/sh: /etc/init.d/sshd: not found

这样的方式不能启动,需要安装一个alpine的管理工具
apk add --no-cache openrc
/ # /etc/init.d/sshd start
 * WARNING: sshd is already starting
 所以使用 /usr/sbin/sshd -D 方式启动。但是又出现如下错误
 / # /usr/sbin/sshd -D
Could not load host key: /etc/ssh/ssh_host_rsa_key
Could not load host key: /etc/ssh/ssh_host_ecdsa_key
Could not load host key: /etc/ssh/ssh_host_ed25519_key
sshd: no hostkeys available -- exiting.
解决方式:
ssh-keygen -t rsa -P "" -f /etc/ssh/ssh_host_rsa_key
ssh-keygen -t ecdsa -P "" -f /etc/ssh/ssh_host_ecdsa_key
ssh-keygen -t ed25519 -P "" -f /etc/ssh/ssh_host_ed25519_key

再次启动
/ # /usr/sbin/sshd -D

启动成功

3、创建容器后的网络问题
[[email protected] opt]# docker run -it alpine
WARNING: IPv4 forwarding is disabled. Networking will not work.

解决方式:
[[email protected] ~]# vim /usr/lib/sysctl.d/00-system.conf
# Kernel sysctl configuration file
#
# For binary values, 0 is disabled, 1 is enabled.  See sysctl(8) and
# sysctl.conf(5) for more details.

# Disable netfilter on bridges.
net.bridge.bridge-nf-call-ip6tables = 0
net.bridge.bridge-nf-call-iptables = 0
net.bridge.bridge-nf-call-arptables = 0

net.ipv4.ip_forward=1    # 添加这一行

[[email protected] ~]# systemctl restart network
[[email protected] ~]# docker rm 719f5a1f1ffd
[[email protected] ~]# docker run -it alpine
/ #

  

原文地址:https://www.cnblogs.com/zhujingzhi/p/9740423.html

时间: 2024-07-30 16:49:22

基于alpine用dockerfile创建的ssh镜像的相关文章

基于alpine用dockerfile创建的tomcat镜像

1.下载alpine镜像 [[email protected] ~]# docker pull alpine Using default tag: latest Trying to pull repository docker.io/library/alpine ... latest: Pulling from docker.io/library/alpine 4fe2ade4980c: Pull complete Digest: sha256:621c2f39f8133acb8e64023a9

基于alpine用dockerfile创建的nginx镜像

1.下载alpine镜像 [[email protected] ~]# docker pull alpine Using default tag: latest Trying to pull repository docker.io/library/alpine ... latest: Pulling from docker.io/library/alpine 4fe2ade4980c: Pull complete Digest: sha256:621c2f39f8133acb8e64023a9

使用dockerfile 创建ubuntu ssh镜像

############################################################ # Dockerfile to build ubunto ssh container images # Based on Ubuntu ############################################################ FROM ubuntu MAINTAINER jinyetongxiao ENV TZ Asia/Shanghai EN

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

1. 首先创建一个Dockerfile文件,文件内容如下 # 选择一个已有的os镜像作为基础 FROM centos:centos6 # 镜像的作者 MAINTAINER Fanbin Kong "[email protected]" # 安装openssh-server和sudo软件包,并且将sshd的UsePAM参数设置成no RUN yum install -y openssh-server sudo RUN sed -i 's/UsePAM yes/UsePAM no/g' /

通过DockerFile创建tomcat+ssh服务镜像

在上一节通过DockerFile创建ssh服务容器中创建一个centos:ssh_v2镜像,本文在该镜像的基础上再创建一个tomcat镜像,实现TOMCAT+SSH的镜像.    可以直接使用该镜像创建容器提供tomcat服务,通过定制tomcat服务器web目录,开通后可放入代码,或通过传入本地目录方式提供代码目录. 1. 准备如下内容: -rw-r--r-- 1 root root      323 5月  31 14:20 Dockerfile   -rw-r--r-- 1 root ro

Dockerfile创建自定义Docker镜像以及CMD与ENTRYPOINT指令的比较

1.概述 创建Docker镜像的方式有三种 docker commit命令:由容器生成镜像: Dockerfile文件+docker build命令: 从本地文件系统导入:OpenVZ的模板. 关于这三种方式的大致说明请参考yeasy/docker_practice的创建镜像. 最近学习了Dockerfile文件的相关配置,这里做一下简单的总结,并对之前一直感到有些迷惑的CMD和ENTRYPOINT指令做个差异对比. 2.Dockerfile文件总结 Dockerfile 由一行行命令语句组成,

用dockerfile创建支持ssh服务的centos镜像

参考 1 我在/docker/目录下建立了个脚本是用来启动容器上面的ssh服务的 vi run.sh #!/bin/bash /usr/sbin/sshd -D 2 同样在docker目录下创建dockefile文件如下: [[email protected] sbin]# cat /docker/dockerfile  FROM centos RUN yum install passwd openssl openssh-server -y ##下面三行是解决sshd服务启动时报错的 RUN s

使用dockerfile创建支持ssh远程的镜像

1.创建相关目录 [[email protected]~]# mkdir /docker/sshd –p 2.编写dockerfile [[email protected]]# vim Dockerfile # This is a dockerfile # Version 1 # By Kevin # Base image From centos # Maintainer MAINTAINER Kevin kevinhao.blog.51cto.com # Commands # Install

Docker:使用Dockerfile创建支持SSH服务的镜像

1.创建工作目录 # mkdir sshd_ubuntu # ls 在其中,创建Dockerfile和run.sh文件 # cd sshd_ubuntu/ # touch Dockerfile run.sh # ls 2. 编写run.sh脚本和authorized_keys文件 # vi run.sh 写入内容: #! /bin/bash /usr/sbin/sshd –D 在宿主主机上生成SSH密钥对,并创建authorized_keys # ssh-keygen –t rsa # cat