基于alpine用dockerfile创建的ssh镜像
1、下载alpine镜像
[root@docker43 ~]# 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
[root@docker43 ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
docker.io/alpine latest 196d12cf6ab1 3 weeks ago 4.41 MB
2、编写dockerfile
2.1.创建一个工作目录
[root@docker43 ~]# cd /opt/
[root@docker43 opt]# mkdir alpine_ssh && cd alpine_ssh && touch Dockerfile [root@docker43 alpine_ssh]# ll
总用量 4
-rw-r--r-- 1 root root 654 10月 3 23:21 Dockerfile
2.2.编写Dockerfile
# 指定创建的基础镜像
FROM alpine # 作者描述信息
MAINTAINER alpine_sshd (zhujingzhi@123.com) # 替换阿里云的源
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 tzdata && \
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && \
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所在的目录下
[root@docker43 alpine_ssh]# pwd
/opt/alpine_ssh
[root@docker43 alpine_ssh]# docker build -t alpine:sshd .
3、创建容器测试
创建容器
[root@docker43 alpine_ssh]# docker run -itd -p 10022:22 --name alpine_ssh_v1 alpine:sshd
[root@docker43 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
测试
[root@docker43 alpine_ssh]# ssh root@127.0.0.1 -p10022
root@127.0.0.1'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/ 创建容器文件修改
[root@docker43 ~]# 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、创建容器后的网络问题
[root@docker43 opt]# docker run -it alpine
WARNING: IPv4 forwarding is disabled. Networking will not work. 解决方式:
[root@docker43 ~]# vim /etc/sysctl.conf
net.ipv4.ip_forward=1 # 添加这一行 [root@docker43 ~]# docker run -it alpine
/ #
基于alpine用dockerfile创建的ssh镜像的更多相关文章
- 基于alpine用dockerfile创建的tomcat镜像
1.下载alpine镜像 [root@docker43 ~]# docker pull alpine Using default tag: latest Trying to pull reposito ...
- 基于alpine用dockerfile创建的nginx镜像
1.下载alpine镜像 [root@docker43 ~]# docker pull alpine Using default tag: latest Trying to pull reposito ...
- 基于alpine用dockerfile创建的爬虫Scrapy镜像
一.下载alpine镜像 [root@DockerBrian ~]# docker pull alpine Using default tag: latest Trying to pull repos ...
- 使用dockerfile 创建ubuntu ssh镜像
############################################################ # Dockerfile to build ubunto ssh contai ...
- Docker使用Dockerfile创建支持ssh服务自启动的容器镜像
原文链接:Docker使用Dockerfile创建支持ssh服务自启动的容器镜像 1. 首先创建一个Dockerfile文件.文件内容例如以下 # 选择一个已有的os镜像作为基础 FROM cento ...
- 使用Dockerfile创建支持SSH服务的镜像
1.前面我们学习了使用Dockerfile,那接下来我们就用Dockerfile创建一个支持SSH服务的镜像. 2.首先创建一个目录ssh_centos [root@rocketmq-nameserv ...
- docker学习系列(二):使用Dockerfile创建自己的镜像
dockerfile可以允许我们自己创建镜像,通过编写里面的下载软件命令,执行docker build 即可生成镜像文件. 初尝dockerfile 新建一个目录test,然后进入这个目录,创建一个名 ...
- Dockerfile创建自定义Docker镜像以及CMD与ENTRYPOINT指令的比较
1.概述 创建Docker镜像的方式有三种 docker commit命令:由容器生成镜像: Dockerfile文件+docker build命令: 从本地文件系统导入:OpenVZ的模板. 关于这 ...
- Docker之使用Dockerfile创建定制化镜像(四)--技术流ken
前言 在之前的博客<Docker端口映射及创建镜像演示(二)--技术流ken>,演示了如何使用一个现有容器创建一个镜像,以及镜像在阿里云的上传和下载. 但是这样的镜像有很大的局限性,不能根 ...
随机推荐
- 2018.12.15 spoj Substrings(后缀自动机)
传送门 后缀自动机基础题. 求长度为iii的子串出现次数的最大值. 对原串建出samsamsam,然后用sizsizsiz更新每个maxlenmaxlenmaxlen的答案. 然后由于后缀链接将其转化 ...
- IntelliJ IDEA 启动 自动进入项目列表,IDE启动不进入项目,IDE启动不进入上一次的项目
1.希望IDE启动后,不进入上次使用的项目,而进入如图 2.项目很多,想着切换不方便,还得在启动打开前,点击取消,而且拖慢IDE启动的速度,所以进入这个项目列表页还是很好的. 3.设置方法 首先,任意 ...
- centos 7 安装 python3.6 python3 安装步骤以及pip pip3安装挂载
首先去python官网下载python3的源码包,网址:https://www.python.org/ 或者直接wget下载 wget https://www.python.org/ftp/pytho ...
- what is a resolver
resolver [rɪ'zɒlvə] 解析器 ViewResolver The ViewResolver provides a mapping between view names and actu ...
- timeSetEvent
Header: Declared in Mmsystem.h; include Windows.h.Library: Use Winmm.lib. MSDN里定义的函数原型如下: MMRESULT t ...
- (转)memcached的运行状态监控
转自:http://hi.baidu.com/software_one/item/e7e2b5846ba28bcaef083df3 当memcached启动起来并被访问后,如何知道其详细运行情况呢,详 ...
- _编程语言_C++_std
正常使用 cout << "Count is "<<i<<endl; 含有std std::cout << "Count ...
- Idea使用拆解
收藏学习地址 https://blog.csdn.net/qq_28804275/article/details/80891907
- 第42件事 移动App设计的11大法则
移动App设计的重要法则指的是我们在设计App需要遵守的一些设计规范和法则,这些法则就好像一些行为规范一样. 1.导航手机客户端上的主导航(一级导航)如图6-22所示. 对图6-22中所示的几个主导航 ...
- 质量能量等效的泛化--物理学定律方程与等效原理的对应关系 Generalization of Mass-Energy Equivalence--Corresponding Relations between Equations of Physical Laws and Equiva
前文所述,质能方程E=Mc^2可知质能等效,即可设计实验,使得实验无法分辨是何者变化. 泛化:所有的物理学定律方程都可看作方程两边的概念是等效的. 举几个栗子: 例一:F=ma--伊萨克爵士的代表作. ...