使用Docker安裝Centos,並通過SSH連接到容器


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

  1. Docker Hub獲取centos相關的鏡像

  2. 選擇Offical image的鏡像

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

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

  4. 使用此鏡像啟動容器 使用的命令:

    docker run -itd --privileged --name my_centos7 -p 50003:22 centos:7 /usr/sbin/init

    該命令的操作是為此容器定義了一個my_centos7的名字,同時將該容器的22端口綁定到主機50003端口,並以特權模式在后台啟動。如果對命令不太了解可以去Docker 命令大全 | 菜鳥教程 (runoob.com)查看。 運行之后獲取到此容器的id,如圖:

  5. 進入容器 使用的命令:

    docker exec -it my_centos7 /bin/bash

    使用exec的原因是因為容器以特權模式啟動,使用attach的話貌似會有問題。還不太了解,一直在使用exec操作 運行之后的結果,如圖:

     
  6. 進行一些初始的操作,對系統進行升級

    yum update

    然后回輸出一些需要升級的東西,並詢問是否升級安裝,輸入y確定升級。等待升級完成(如果中途出現了詢問y/n的情況,輸入y即可)。(Docker中的centos7中安裝軟件的時候會自動查找最快的鏡像站,所以下載速度還是挺快的,不需要配置鏡像源。實際的系統應該也是這樣吧。)

  7. 安裝需要的軟件

    使用的命令:

     #安裝openssh-server
     yum install openssh-server -y
     #安裝需要用到的軟件vim用於編輯文件、passwd用於設置root或其他用戶的密碼、openssh-clients用於讓此容器可以使用ssh命令、net-tools我暫時只是用來查看ip
     yum install vim passwd openssh-clients net-tools

    等待安裝即可。

  8. 查看ssh服務的狀態

    systemctl status sshd

    當前還是關閉的。

    啟動ssh服務(此處用到的systemctl命令是在特權模式下才能起作用的,也就是在啟動時時候加了 --privileged 選項。)

    systemctl start sshd

    再次查看,可以看到已經運行了

    將ssh服務加入到自啟項。

    systemctl enable sshd

    如果想停止服務,則使用下面的命令

    systemctl stop sshd

    如果先移除ssh的自啟,則使用這條命令

    systemctl disable sshd
  9. 編輯ssh的配置文件

    vim /etc/ssh/sshd_config

    將 Port 22、ListenAddress 0.0.0.0、ListenAddress :: 前面的#號去掉(即取消這幾行的注釋)

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

    編輯完成之后按esc回到普通模式,輸入 :wq 保存並退出。

  10. 為root用戶設置密碼

    執行命令:

    passwd root

    接下來輸入兩次密碼(是看不到的)。

  1. 重啟ssh,並測試通過主機連接容器

    systemctl restart sshd

    通過主機連接容器(該操作在Windows的環境下進行)

    ssh root@localhost -p 50003

    因為前面我們把容器的22端口綁定到了宿主機的50003端口上,所以在連接時不能夠直接使用

    shh root@localhost 要在后面說明通過端口50003連接,即加上 -p 50003.

    成功之后會出現這個詢問,輸入yes

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

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

  1. 退出ssh連接,使用exit命令退出ssh連接(退出容器也是用exit命令)

    exit

    結果如下:

  1. 利用此容器做成本地鏡像,方便以后部署同樣的環境

    docker commit my_centos7 centos:ssh

    此命令是用已有的容器(my_centos7)生成鏡像,名為centos,tag為ssh

    可以看到在Docker Desktop的Images中有了name為centos,tag為ssh的鏡像
  2. 注:當使用此容器生成的鏡像來生成新的容器的時候依舊需要使用特權模式,並綁定一個新的端口。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM