運行環境:Windows11(有WSL2),Docker Desktop(使用WSL2 引擎 Use the WSL2 based Engine)
-
從

-
選擇Offical image的鏡像

-
從Tags中找到合適鏡像,並復制命令,在cmd中運行命令



然后就可以在Docker Desktop軟件中看到此鏡像

-
使用此鏡像啟動容器 使用的命令:
docker run -itd --privileged --name my_centos7 -p 50003:22 centos:7 /usr/sbin/init該命令的操作是為此容器定義了一個my_centos7的名字,同時將該容器的22端口綁定到主機50003端口,並以特權模式在后台啟動。如果對命令不太了解可以去
-
進入容器 使用的命令:
docker exec -it my_centos7 /bin/bash使用exec的原因是因為容器以特權模式啟動,使用attach的話貌似會有問題。還不太了解,一直在使用exec操作 運行之后的結果,如圖:
-
進行一些初始的操作,對系統進行升級
yum update然后回輸出一些需要升級的東西,並詢問是否升級安裝,輸入y確定升級。等待升級完成(如果中途出現了詢問y/n的情況,輸入y即可)。(Docker中的centos7中安裝軟件的時候會自動查找最快的鏡像站,所以下載速度還是挺快的,不需要配置鏡像源。實際的系統應該也是這樣吧。)
-
安裝需要的軟件
使用的命令:
#安裝openssh-server yum install openssh-server -y #安裝需要用到的軟件vim用於編輯文件、passwd用於設置root或其他用戶的密碼、openssh-clients用於讓此容器可以使用ssh命令、net-tools我暫時只是用來查看ip yum install vim passwd openssh-clients net-tools等待安裝即可。
-
查看ssh服務的狀態
systemctl status sshd
當前還是關閉的。
啟動ssh服務(此處用到的systemctl命令是在特權模式下才能起作用的,也就是在啟動時時候加了 --privileged 選項。)
systemctl start sshd再次查看,可以看到已經運行了

將ssh服務加入到自啟項。
systemctl enable sshd如果想停止服務,則使用下面的命令
systemctl stop sshd如果先移除ssh的自啟,則使用這條命令
systemctl disable sshd -
編輯ssh的配置文件
vim /etc/ssh/sshd_config將 Port 22、ListenAddress 0.0.0.0、ListenAddress :: 前面的#號去掉(即取消這幾行的注釋)

將PermitRootLogin yes、PubkeyAuthentication yes的注釋去掉(可以使用vim的搜索功能,即在普通模式下輸入 /Per 即可查找到)

編輯完成之后按esc回到普通模式,輸入 :wq 保存並退出。
-
為root用戶設置密碼
執行命令:
passwd root接下來輸入兩次密碼(是看不到的)。
-
重啟ssh,並測試通過主機連接容器
systemctl restart sshd通過主機連接容器(該操作在Windows的環境下進行)
ssh root@localhost -p 50003因為前面我們把容器的22端口綁定到了宿主機的50003端口上,所以在連接時不能夠直接使用
shh root@localhost 要在后面說明通過端口50003連接,即加上 -p 50003.
成功之后會出現這個詢問,輸入yes

然后會讓輸入root的密碼,即可連接

連接成功之后,使用uname -a,可以看到現在是Linux,結果如下圖:

-
退出ssh連接,使用exit命令退出ssh連接(退出容器也是用exit命令)
exit結果如下:

-
docker commit my_centos7 centos:ssh -



