命令行中登錄到docker hub
命令行中輸入:docker login

制作centos7.4鏡像
1、第一步:去遠端拉取一個最新的centos最基礎鏡像,基於此鏡像來制作
docker pull centos
2、第二步:啟動該docker容器
docker run -it centos:latest /bin/bash
3、第三步:在啟動的容器中來安裝sshd
yum -y install openssh-server
yum -y install openssh-clients
4、第四步:我們來嘗試啟動一下sshd服務,會發現有報錯
啟動sshd服務命令: /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
我們來解決以上錯誤:
ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key -N ""
ssh-keygen -t ecdsa -f /etc/ssh/ssh_host_ecdsa_key -N ""
ssh-keygen -t ed25519 -f /etc/ssh/ssh_host_ed25519_key -N ""
此時再次來啟動sshd服務應該無錯誤了
5、第五步:編輯sshd_config配置文件
執行命令:vim /etc/ssh/sshd_config
將配置文件中原本UsePAM yes
換成UsePAM no
6、第六步:修改root的密碼
執行命令:passwd root
輸入兩次密碼即可
7、第七步:我們用exit命令來退出容器
8、第八步:基於剛退出的容器我們來制作帶ssh功能的centos鏡像
docker commit bf5b84f8e2d8 docker.io/XXXXXXXXX/centos7.4_ssh
(1)注意此處的bf5b84f8e2d8即為剛才運行的容器的id,可用docker ps -a查看
(2)注意此處的commit格式,必須為docker.io/<你的dockerhub用戶名>/centos7.4_ssh
push鏡像到遠端
docker push docker.io/XXXXXXXX/centos7.4_ssh:latest
同樣需要注意此處的push格式,必須為docker.io/<你的dockerhub用戶名/完整的鏡像名
如下圖所示:

同時我們去docker hub上也能看到我們剛push的鏡像:

效果驗證
為了驗證鏡像確實被推到遠端,我們將本地剛打包好的鏡像刪除,然后從遠端pull下來運行看看
docker pull hansonwang/centos7.4_ssh
可以成功pull下來:

我們來測試一下該鏡像里是否包含有ssh組件:運行其並用ssh連接到容器中:
運行容器:docker run -d -p 2222:22 docker.io/hansonwang/centos7.4_ssh:latest /usr/sbin/sshd -D
ssh接入:ssh root@localhost -p 2222
此時會讓你輸入密碼,然后成功登入容器之中:
