1. 程式人生 > 實用技巧 >用ssh連線docker容器

用ssh連線docker容器

  1. 拉取映象,這裡採用centos:7作為基礎映象
docker pull centos:7
  1. 執行映象,生成容器
docker run -d --name ssh_box --privileged=true centos:7 /usr/sbin/init
07228ec257564c4874ca24216d651bda65573d49e4149064a079cacca27de4e1 # 生成的容器ID

--name 給新生成的容器命名
--privileged=true 給容器訪問Linux核心特權,後面要訪問systemctl
返回一串容器ID表示容器生成成功
3. 進入剛剛生成的容器

docker exec -it 07228ec25756 /bin/bash
  1. 進入容器後,使用passwd密碼來修改密碼(如提示沒有這個命令列使用yum install passwd安裝)
    passwd

4.安裝vim和Openssh(docker 容器中執行)
yum install vim openssh-server openssh-clients -y
5.修改SSH配置檔案
 vim /etc/ssh/sshd_config

PubkeyAuthentication yes #啟用公鑰私鑰配對認證方式 
AuthorizedKeysFile .ssh/authorized_keys #公鑰檔案路徑(和上面生成的檔案同) 
PermitRootLogin yes #root能使用ssh登入
ClientAliveInterval 60  #引數數值是秒 , 是指超時時間
ClientAliveCountMax 3 #設定允許超時的次數
  1. 重啟ssh服務,並設定開機啟動
    systemctl restart sshd.service
    systemctl enable sshd.service
    Failed to get D-Bus connection: Operation not permitted
    這裡如果報這個錯誤說明容器許可權不足,第2步執行有誤
    7.退出容器並儲存更改
    exit
  2. 用剛才生成的容器建立映象
    docker commit -m 'openssh' -a 'Docker for ssh' ffe81683c404 ssh_box

-m:來指定提交的說明資訊,跟我們使用的版本控制工具一樣
-a 可以指定更新的使用者資訊
ffe81683c404: 建立映象的容器的ID,就是上面的容器id,也就是我們剛才進入的容器id
ssh_box: 目標映象的倉庫名

docker images可以檢視到新生成的映象

  1. 用新生成的映象啟動新的容器並打通22埠
    docker run -d -p 2222:22 ssh_box /usr/sbin/sshd -D

10.然後可以使用xshell連線新生成的容器

ip: 為宿主主機的ip,而不是docker容器的ip
埠:就是上面的2222
使用者名稱: root
密碼: 就是上面password部分設定的密碼
在mac上可通過ssh root@ip -p:2222 登入新生成的容器

參考文章

Docker容器使用問題:Failed to get D-Bus connection: Operation not permitted
ssh 直接登入docker容器