10.1基于commit命令創(chuàng)建
命令格式為 docker commit CONTAINER [REPOSITORY[:TAG]]
1.準(zhǔn)備工作
首先使用 ubuntu:16.04鏡像來創(chuàng)建一個容器
$ docker run -it ubuntu:16.04 /bin/bash
root@962ddbdf1575:/#
更新apt緩存吆你,并安裝 openssh-server:
root@962ddbdf1575:/# apt-get update ; apt-get install openssh-server -y
2.安裝和配置SSH服務(wù)
選擇主流的 openshh-server 作為服務(wù)端:
root@962ddbdf1575:/# apt-get install openssh-server -y
如果需要正常啟動SSH服務(wù)豪筝,則目錄 /var/run/sshd 必須存在。手動創(chuàng)建它氯哮,并啟動服務(wù):
root@962ddbdf1575:/# mkdir -p /var/run/sshd
root@962ddbdf1575:/# /usr/sbin/sshd -D & # 啟動SSH服務(wù)
[1] 3636
此時查看容器的22端口(SSH默認(rèn)堅挺的端口)沪饺,可見此端口已經(jīng)處于監(jiān)聽狀態(tài):
root@962ddbdf1575:/# apt-get install net-tools # 有些沒有netstat功能躏敢,通過此命令安裝
root@962ddbdf1575:/# 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 3636/sshd
tcp6 0 0 :::22 :::* LISTEN 3636/sshd
修改SSH服務(wù)的安全登錄配置,取消pam登錄限制:
root@962ddbdf1575:/# sed -ri 's/session required pam_loginuid.so/#session required pam_loginuid.so/g' /etc/pam.d/sshd
在root用戶目錄下創(chuàng)建 .ssh 目錄整葡,并復(fù)制需要登錄的公鑰信息(一般為本地主機目錄下的 件余。ssh/id_rsa.pub 文件,可有ssh-keygen -t rsa 命令生成)到authorized_keys文件中:
root@962ddbdf1575:/# mkdir root/.ssh
root@962ddbdf1575:~/.ssh# vim authorized_key
創(chuàng)建自動啟動SSH服務(wù)的可執(zhí)行文件run.sh,并添加可執(zhí)行權(quán)限:
root@962ddbdf1575:/# vi /run.sh
root@962ddbdf1575:/# chmod +x run.sh
root@962ddbdf1575:/# vim /run.sh # 自行百度vim的使用命令
#!/bin/bash
/usr/sbin/sshd -D
:wq # 保存并退出
root@962ddbdf1575:/# exit #最后啼器,退出容器
exit
3.保存鏡像
講所退出的容器用 docker commit 命令保存為一個新的 ubuntu:sshd 鏡像:
$ docker commit 962ddbdf1575 ubuntu:sshd
sha256:3caead90f45bf7712f2306cbead056def6f33817328d803016b23d441e716146
使用 docker images 查看本地生成的新鏡像 ubuntu:sshd :
docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu sshd 3caead90f45b About a minute ago 251MB
ubuntu 16.04 14f60031763d 2 weeks ago 120MB
busybox latest efe10ee6727f 2 weeks ago 1.13MB
centos latest 36540f359ca3 4 weeks ago 193MB