docker - 容器里安裝ssh


docker安裝ssh

通過命令行安裝

  1. pull ubuntu鏡像
    docker pull ubuntu:latest
  2. 啟動並進入bash
docker run -it -d ubuntu:lastest /bin/bash
# 查看剛剛運行容器的id
docker ps
# 在容器中執行bash命令
docker exec -it id /bin/bash
  1. 安裝openssh-server並啟動
apt-get update
apt-get install openssh-server
# 啟動之前需手動創建/var/run/sshd,不然啟動sshd的時候會報錯
mkdir -p /var/run/sshd
# sshd以守護進程運行
/usr/sbin/sshd -D &
# 安裝netstat,查看sshd是否監聽22端口
apt-get install net-tools
netstat -apn | grep ssh

如果已經監聽22端口,說明sshd服務啟動成功

  1. ssh登陸
# 生成ssh key
ssh-keygen -t rsa
# 修改sshd-config允許root登陸
sed -i 's+PermitRootLogin prohibit-password+PermitRootLogin yes' /etc/ssh/sshd-config

修改完sshd-config之后需要重啟sshd服務

// 找到pid
ps -aux | grep ssh
kill -9 pid
/usr/sbin/sshd -D &

查看容器ip

ifconfig

在主機上進行登陸

ssh root@ip

就可以登錄成功了,但是注意這里是docker容器的宿主機才能登陸成功,如果需要其他機器登陸,可以在啟動docker的時候進行端口映射

// 11122宿主機端口,22為容器端口
docker run -it -p 11122:22 
// 在其他機器上可以使用以下命令登陸,假設宿主機ip為192.168.1.101
ssh -p 11122 root@192.168.1.101
  1. 保存容器
// 把id為id的容器保存
docker commit id sshd:ubuntu
// 停止容器
docker stop id

通過dockerfile

# 以最新的Ubuntu鏡像為模板
FROM ubuntu:latest

// 將本目錄下的sources.list作為容器的一個文件
ADD sources.list /root/sources.list
// 使用阿里Ubuntu源,更新快
RUN cp /root/sources.list  /etc/apt/sources.list.d/aliyun.list

RUN apt-get update
RUN apt-get install -y openssh-server
RUN apt-get install -y net-tools
RUN apt-get install -y vim
RUN mkdir -p /var/run/sshd
RUN mkdir -p mkdir/root/.ssh/
// 修改root密碼,便於遠程登錄
RUN echo root:123456 | chpasswd
// 將key生成在指定文件內
RUN ssh-keygen -q -t rsa -b 2048  -f /etc/ssh/ssh_host_rsa_key -P '' -N ''
// 配置ssh可以使用root登陸
RUN sed -i 's/PermitRootLogin without-password/PermitRootLogin yes/' /etc/ssh/sshd_config

// 開放22端口
EXPOSE 22

CMD /usr/sbin/sshd -D &

根據Dockerfile build鏡像

docker build -t nginx:ubuntu .


免責聲明!

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



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