方案1:使用docker自定義網路
前提1 關閉防火牆
sudo systemctl stop firewalld.service #停止firewall
sudo systemctl disable firewalld.service #禁止firewall開機啟動
3 安裝docker
1 自定義網路
由於容器的網路是在啟動時由docker engine配置的,所以造成容器的ip位址不固定。
可以自定義網路使容器使用固定ip,並且重啟後ip不會變,檔案/etc/hosts 也不會被重置。
$docker network create --subnet=172.18.0.0/16 mynetwork
$docker network ls
自定義mynetwork網路
2 構建基礎映象
執行centos映象啟動乙個容器,安裝依賴庫和必要軟體,提交新的映象basepbs/centos
$docker run –it centos
$yum install -y openssh-clients
$yum install -y net-tools
$yum install -y vim
$yum install -y which
$exit
$docker commit basepbs/centos
構建基礎映象
3 構建容器
3.1 建立三個容器
使用basepbs/centos映象建立三個容器,分別指定映象名稱,hostname,新增/etc/hosts中的資料,指定自定義網路以及ip
容器名稱 容器hostname ip
pbs1 pbs1 172.18.0.3
pbs2 pbs2 172.18.0.4
pbs3 pbs3 172.18.0.5
$docker run -tid --name pbs1 -h pbs1 --add-host pbs1:172.18.0.3 --add-host pbs2:172.18.0.4 --add-host pbs3:172.18.0.5 --net=mynetwork --ip=172.18.0.3 basepbs/centos
$docker run -tid --name pbs2 -h pbs2 --add-host pbs1:172.18.0.3 --add-host pbs2:172.18.0.4 --add-host pbs3:172.18.0.5 --net=mynetwork --ip=172.18.0.4 basepbs/centos
$docker run -tid --name pbs3 -h pbs3 --add-host pbs1:172.18.0.3 --add-host pbs2:172.18.0.4 --add-host pbs3:172.18.0.5 --net=mynetwork --ip=172.18.0.5 basepbs/centos
3.2 修改ssh配置檔案
pbs1配置
#執行如下命令
$yum install passwd openssl openssh-server
$/usr/sbin/sshd
#報錯檔案不存在,執行以下命令
$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 ''
#生成rsa隨機圖,修改 /etc/ssh/sshd_config 配置資訊:
#usepam yes 改為 usepam no
#useprivilegeseparation sandbox 改為 useprivilegeseparation no
#具體執行如下:
$sed -i "s/#useprivilegeseparation.*/useprivilegeseparation no/g" /etc/ssh/sshd_config
$sed -i "s/usepam.*/usepam no/g" /etc/ssh/sshd_config
#啟動sshd
$/usr/sbin/sshd
#檢視ssh服務是否啟動成功
$ps -ef | grep ssh
#修改root密碼
$passwd
......
#生成密碼對
$ssh-keygen -t rsa
#檢視生成的私鑰idrsa和公鑰idrsa.pub
$cd ~/.ssh/
#檢視ssh服務是否啟動成功
$ps -ef | grep ssh12
345pbs2配置
$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 ''
$sed -i "s/#useprivilegeseparation.*/useprivilegeseparation no/g" /etc/ssh/sshd_config
$sed -i "s/usepam.*/usepam no/g" /etc/ssh/sshd_config
$/usr/sbin/sshd
$ps -ef | grep ssh
$passwd
$ssh-keygen -t rsa
$cd ~/.ssh/
$ps -ef | grep ssh
$/usr/sbin/sshd
#將pbs2的公鑰傳送到pbs1上
$scp id_rsa.pub root@pbs1:~/.ssh/id_rsa.pub.pbs2
pbs3配置
$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 ''
$sed -i "s/#useprivilegeseparation.*/useprivilegeseparation no/g" /etc/ssh/sshd_config
$sed -i "s/usepam.*/usepam no/g" /etc/ssh/sshd_config
$/usr/sbin/sshd
$ps -ef | grep ssh
$passwd
$ssh-keygen -t rsa
$cd ~/.ssh/
$ps -ef | grep ssh
$/usr/sbin/sshd
#將pbs3的公鑰傳送到pbs1上
$scp id_rsa.pub root@pbs1:~/.ssh/id_rsa.pub.pbs3
3.3 生成authorized_keys
進入~/.ssh/,合併id_rsa.pub.*到authorized_keys中,然後再傳送到pbs2、pbs3的~/.ssh/
$cd ~/.ssh/
$cat id_rsa.pub >> authorized_keys
$cat id_rsa.pub.pbs2 >> authorized_keys
$cat id_rsa.pub.pbs3 >> authorized_keys
$scp authorized_keys root@pbs2:~/.ssh/
$scp authorized_keys root@pbs3:~/.ssh/
至此,配置ok!
4 截圖
三個容器ip
ssh連線
5 預留問題
在重啟容器的時候ssh服務需要再次開啟
$/usr/sbin/sshd
$ps -ef | grep ssh
方案2:使用host網路模式
ssh登入Docker容器
1.登入容器中,修改root密碼,安裝openssh服務 docker exec it u web bin bash passwd 修改容器中系統root賬戶的密碼 yum y install openssh 安裝openssh服務2.修改ssh配置檔案以下選項,去掉 注釋,將四個選項啟用 root...
詳解Docker建立支援ssh服務的容器和映象
1.這裡使用的centos作為容器,所以首先 centos的images sudo docker pull centos 2.後執行乙個centos的容器,這裡使用centos6作為我測試的容器 sudo docker run name centos ssh i t centos centos6 b...
Docker 容器間通訊
name 給執行的容器起乙個名字 docker run d name web tomcat 執行centos 必須進入互動介面 it 進入互動模式 docker run d name database it centos bin bash inspect 檢視docker內部原始檔案。docker ...