主要思路:在容器裏設置ssh服務開機自啓,然後保存爲鏡像。下次創建容器的時候加上-p 參數,進行22端口映射即可。
實驗部分:
使用vmware進行實驗,博主使用docker pull centos,拉取了centos鏡像。
創建一個centos7的容器, 指令:docker run -it --name 自定義容器名 鏡像名
docker run -it --name my_ssh1 b5b4d78bc90c
成功進入容器:
安裝ssh服務
yum install -y openssh-server
修改密碼
passwd root
然後會提示你輸入新密碼 (兩次)
打開ssh服務
/usr/sbin/sshd -D &
&表示在後臺運行,然後結果如下圖,表示成功運行
如果報錯,則需要ssh公鑰私鑰對
ssh-keygen -q -t rsa -b 2048 -f /etc/ssh/ssh_host_rsa_key -N ''
ssh-keygen -q -t ecdsa -f /etc/ssh/ssh_host_ecdsa_key -N ''
ssh-keygen -t dsa -f /etc/ssh/ssh_host_ed25519_key -N ''
創建一個腳本文件,在文件裏寫入啓動ssh的指令,設置開機自啓即可
vi /run.sh
輸入以下內容
#!/bin/bash
/usr/sbin/sshd -D
設置文件權限
chmod +x run.sh
配置完以上內容, 使用exit退出容器,使用docker ps -a 查看容器
使用commit提交修改內容,docker commit 容器ID 鏡像:tag
docker commit 55b84552304f my_ssh:v2
回車,使用docker images 查看鏡像
這就是我們剛剛提交的鏡像
以該鏡像爲模板,生成容器,並設置端口映射
docker run -id --name ssh_test1 -p 2233:22 3556c32869fa /run.sh
後面的/run.sh 是使用CMD指令,在啓動容器時,會執行改CMD內容,意思就是開機的時候,啓動run.sh腳本(我們在上面設置的開啓ssh服務的腳本)
接下來進行測試
賬號密碼爲我們在上一個容器設置的內容。
個人理解
使用docker的好處,比如有一個服務器,需要給多個人分配賬號使用,單純使用adduser指令進行帳戶分配,是沒有root的,就算有,使用了root會影響到其他帳戶的內容,導致環境污染。
使用docker,我們可以多創建幾個容器,映射幾個端口給他人使用,每個人都是單獨的root,隨便怎麼玩,不會污染環境。
以上觀點,有說的不對的地方,歡迎指正。