蘭陵N梓記

一指流沙,程序年华


  • 首页

  • 归档

  • 关于

  • 搜索
close

制作Archlinux Docker基础Image

时间: 2016-04-10   |   分类: 笔记     |   阅读: 1088 字 ~3分钟

想在Mac本上使用Docker来运行Archlinux,家里安装的是长城宽带,无奈从docker hub下载Archlinux基础Image网速无法忍受。在国内的alauda.cn镜像中心搜索到有Archlinux基础Image,可能由于在Docker使用Archlinux国内人比较少,估计alauda.cn的CDN也没有缓存Archlinux基础Image,下载同样也是龟速,下载多次超时就放弃了。

正好个人还有一台老的笔记本安装了Archlinux,那何不自己做一个基础Image。说真的,还没有从零开始做过基础Image。在Docker hub搜索时发现有一个已有的脚本mkimage-arch.sh,于是把它做了些改造,制作过程记录一下:

  • 源修改为国内的阿里Archlinux镜像源,这个速度快,超赞。
    • 默认安装openssh软件,可以通过ssh来连接Container。
    • 增加一个入口脚本run.sh,在此脚本主配置sshd,并启动sshd。

这个过程看似简单,不过还是遇到一些坑,毕竟Archlinux最小系统与自己已安装的Archlinux在使用sshd上有些区别,不得不反复修改脚本,Build Image与Run Container来验证:

  • 先是采用systemd来启动sshd,在run.sh使用systemctl enable sshd是OK的,但systemctl start sshd却无法启动报找不到文件。
  • 是systemd的配置问题,也没有再去深究,放弃systemd,于是又直接使用/usr/bin/sshd -D来启动sshd,发现还启动失败报没有sshkey。
  • 再使用ssh-keygen来生成系统的ssh_host_*_key。
  • 终于sshd可以正常启动了,但使用ssh -p <port> root@<host>来连接Container,发现报无权限。
  • 于是又得修改/etc/ssh/sshd_config,让root可以ssh登陆。

修改之后的脚本已提交到个人github上,可以在这里下载,使用方式如下:

  • 前提Archlinux中也安装了docker引擎
  # pacman -S docker
  # systemctl enable docker
  # systemctl start docker
  • 以root用户执行mkimage.sh脚本
  # ./mkimage.sh
  • 制作完成之后,使用docker images查看,生成一个名为archlinux的images
  # docker images
  REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
  archlinux           latest              dc54036acaa4        About an hour ago   337.2 MB
  • 使用如下命令生成一个container,容器名为arch1
  # docker run -d --name -arch1 -p 2222:22 archlinux /run.sh
  • 使用ssh登陆验证,ssh -p <port> root@127.0.0.1,默认密码是123456。
  • 也可以使用命令docker exec -it arch1 bash来执行bash进入container操作。
#Linux# #Docker#
Oracle Cloud Day见闻简纪
软件架构一些感想
微信扫一扫交流

标题:制作Archlinux Docker基础Image
作者:兰陵子
关注:lanlingthink(览聆时刻)
声明:自由转载-非商用-非衍生-保持署名(创作共享3.0许可证)

兰陵子

兰陵子

Programmer & Architect

164 日志
4 分类
57 标签
GitHub 知乎
© 2009 - 2022 蘭陵N梓記
Powered by - Hugo v0.101.0
Theme by - NexT
0%