利用docker安装和使用BusyBox、Alphine、Debian/Ubuntu、CentOS/Fedora等操作系统

一、系统列表

官方镜像大小比较

REPOSITORY

TAG

IMAGE ID

VIRTUAL SIZE

alpine

latest

e7d92cdc71fe

5.59MB

debian

latest

b5d2d9b1597b

114MB

busybox

latest

6d5fcfe5ff17

1.22MB

ubuntu

latest

775349758637

64MB

centos

latest

470671670cac

237MB

BusyBox

BusyBox是一个集成了一百多个最常用Linux命令和工具(如cat、echo、grep、mount、telnet等)的精简工具箱,它只有几MB的大小,很方便进行各种快速验证,被誉为“Linux系统的瑞士军刀”。BusyBox可运行于多款POSIX环境的操作系统中,如Linux(包括Android)、Hurd、FreeBSD等。

下载镜像,镜像大小仅为1.22MB

docker pull busybox:latest

启动一个 busybox 容器,并在容器内查看挂载信息,如下所示

docker run  –it busybox 
 mount

Alpine

Alpine 操作系统是一个面向安全的轻型Linux发行版。它不同于通常的Linux发行版,Alpine采用了musllibc和BusyBox以减小系统的体积和运行时资源消耗,但功能上比BusyBox又完善得多,因此得到开源社区越来越多的青睐。在保持瘦身的同时,Alpine还提供了自己的包管理工具apk,可以通过https://pkgs.alpinelinux.org/packages查询包信息,也可以通过apk 命令直接查询和安装各种软件。

下载镜像,镜像大小 5MB 左右

docker run alpine ;

Debian

Debian是由GPL和其他自由软件许可协议授权的自由软件组成的操作系统,由DebianProject组织维护。Debian计划是一个独立、分散的组织,由3000个志愿者组成,接受世界多个非盈利组织的资金支持,Software in the Public Interest提供支持并持有商标作为保护机构。Debian以其坚守 Unix和自由软件的精神,以及给予用户的众多选择而闻名。现在Debian 包括了超过25000个软件包并支持12个计算机系统结构。

下载镜像,镜像大小 114MB

docker search debian

Ubuntu基于Debian发行版和GNOME桌面环境,与Debian的不同在于它每6个月会发布一个新版本(即每年的四月与十月),每2年发布一个LTS长期支持版本。
普通的桌面版可以获得发布后18个月内的支持,标为LTS(长期支持)的桌面版可以获得更长时间的支持。例如,Ubuntu 8.04 LTS(代号Hardy Heron),其桌面应用系列可以获得为期3年的技术支持,服务器版可以获得为期5年的技术支持[16]。而自Ubuntu 12.04 LTS开始,桌面版和服务器版均可获得为期5年的技术支持。2013年3月有消息指出,Ubuntu计划在4月25日Ubuntu13.04发布后,将非LTS版本的支持时间自18个月缩短至9个月,并采用滚动发布模式,允许开发者在不升级整个发行版的情况下升级单个核心包。
Ubuntu的目标在于为一般用户提供一个最新同时又相当稳定,主要以自由软件建构而成的操作系统。Ubuntu当前具有庞大的社群力量支持,用户可以方便地从社群获得帮助。

搜索被收藏10次以上的镜像

docker search -s 10 ubuntu

下载镜像并启动容器

docker run -ti ubuntu:14.04 /bin/bash

当试图直接使用 apt-get 安装一个软件的时候,会提示

E: Unable to locate package:

这并非系统不支持apt-get命令。Docker镜像在制作时为了精简清除了 apt仓库信息,因此需要先执行 apt-get update 命令来更新仓库信息。更新信息后即可成功通过 apt-get 命令来安装软件:

apt-get update

安装curl工具:

apt-get install curl -y

CentOS/Fedora

CentOS和Fedora都是基于Redhat的常见Linux分支。CentOS是目前企业级服务器的常用操作系统;Fedora则主要面向个人桌面用户。

CentOS(Community Enterprise Operating System,社区企业操作系统)是基于Red Hat Enterprise Linux 源代码编译而成的。由于 CentOS与Redhat Linux源于相同的代码基础,所以很多成本敏感且需要高稳定的公司就使用CentOS 来替代商业版 Red Hat Enterprise Linux。CentOS自身不包含闭源软件。

下载镜像并启动容器

docker run -it centos bash

Fedora

Fedora是由Fedora Project 社区开发,红帽公司赞助的 Linux 发行版。它的目标是创建一套新颖、多功能并且自由和开源的操作系统。对用户而言,Fedora是一套功能完备的、可以更新的免费操作系统,而对赞助商 Red Hat而言,它是许多新技术的测试平台,被认为可用的技术最终会加入到 Red Hat Enterprise Linux中

下载镜像并启动容器

docker run -it fedora bash

二、镜像添加SSH服务

之前使用了一些进入容器的方法,比如attach、exec等命令,但是这些命令没办法远程管理容器。所以如果需要远程管理就需要使用SSH。

1.准备

使用ubuntu镜像创建一个容器

docker run -p 10022:22 -it ubuntu /bin/bash

更新apt

apt-get update;

2.安装并配置SSH服务

apt-get install openssh-server –y;

如果需要正常启动 SSH 服务,则目录/ var/run/sshd 必须存在。手动创建它,并启动 SSH 服务

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

安装netstat

apt-get install net-tools

此时查看容器的22端口(SSH默认监听端口)

root@b01f068b0cff:/# netstat -tunlp
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      3845/sshd           
tcp6       0      0 :::22                   :::*                    LISTEN      3845/sshd

重设密码

passwd
  新密码
  确认新密码
#如提示没有passwd这个命令行使用yum install passwd安装

修改SSH配置文件以下选项,去掉#注释,将四个选项启用:

$ vim /etc/ssh/sshd_config
  • RSAAuthentication yes #启用 RSA 认证
  • PubkeyAuthentication yes #启用公钥私钥配对认证方式
  • AuthorizedKeysFile .ssh/authorized_keys #公钥文件路径(和上面生成的文件同)
  • PermitRootLogin yes #root能使用ssh登录

此时在宿主机上或者别的主机上可使用ssh连接容器

ssh 192.168.1.23 -p 10022

创建自动启动SSH服务的可执行文件run.sh

vim /run.sh
#内容如下
#!/bin/bash
/usr/sbin/sshd -D

添加可执行权限

chmod +x run.sh

3.保存并使用镜像

退出容器保存镜像

exit;
docker commit saf3fsd9 sshd:ubuntu

启动新镜像启动容器

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