-
跳轉到家目錄
cd
-
創建pythonsshdockerfile
mkdir pythonsshdockerfile
-
跳轉pythonsshdockerfile
cd pythonsshdockerfile
-
創建Dockerfile文件
vim Dockerfile
-
將Dockerfile的指令復制到文件中
# 使用 python:latest 作為基礎鏡像?
# 如果我的鏡像列表中沒有python:latest鏡像,在執行Dockerfile的時候,會自動拉取
?FROM python:latest
# 更新系統并安裝 SSH 服務
RUN apt-get update && apt-get install -y openssh-server
RUN mkdir /var/run/sshd
# 設置 root 用戶密碼
RUN echo 'root:root' | chpasswd
# 允許 root 用戶通過 SSH 登錄
RUN sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config
# SSH 服務監聽端口
EXPOSE 22
# 啟動 SSH 服務
?# 在前臺執行sshd的指令,如果前臺的進程消失,那么容器自動進入exited
CMD ["/usr/sbin/sshd", "-D"]
-
根據Dockerfile創建新的鏡像
docker build -t python-ssh:2.0 .
-
查看鏡像
docker images
要讓 python:latest
Docker 鏡像允許 SSH 遠程連接,你可以按照以下步驟操作:
1. 創建 Dockerfile
首先,你需要創建一個 Dockerfile
來基于 python:latest
鏡像構建一個新的鏡像,該鏡像會安裝 SSH 服務并進行相應配置。
# 使用 python:latest 作為基礎鏡像
# 如果我的鏡像列表中沒有python:latest鏡像,在執行Dockerfile的時候,會自動拉取
FROM python:latest
# 更新系統并安裝 SSH 服務
RUN apt-get update && apt-get install -y openssh-server
RUN mkdir /var/run/sshd
RUN echo 'root:root' | chpasswd
# 允許 root 用戶通過 SSH 登錄
RUN sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config
# SSH 服務監聽端口
EXPOSE 22
# 啟動 SSH 服務
# 在前臺執行sshd的指令,如果前臺的進程消失,那么容器自動進入exited
CMD ["/usr/sbin/sshd", "-D"]
解釋:
-
FROM python:latest
:指定基礎鏡像為python:latest
。 -
RUN apt-get update && apt-get install -y openssh-server
:更新系統并安裝 SSH 服務。 -
RUN mkdir /var/run/sshd
:創建 SSH 服務所需的運行目錄。 -
RUN echo 'root:password' | chpasswd
:設置root
用戶的密碼為password
,你可以根據需要修改。 -
RUN sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config
:修改 SSH 配置文件,允許root
用戶通過 SSH 登錄。 -
EXPOSE 22
:聲明容器將監聽 22 端口(SSH 默認端口)。 -
CMD ["/usr/sbin/sshd", "-D"]
:啟動 SSH 服務。
2. 構建鏡像
在包含 Dockerfile
的目錄下,使用以下命令構建新的鏡像:
docker build -t python-ssh:latest .
解釋:
-
docker build
:用于構建 Docker 鏡像。 -
-t python-ssh:latest
:指定鏡像的標簽為python-ssh:latest
。 -
.
:指定Dockerfile
所在的上下文路徑為當前目錄。
3. 運行容器
使用以下命令運行新構建的鏡像:
docker run -d -p 2222:22 python-ssh:latest
解釋:
-
docker run
:用于運行 Docker 容器。 -
-d
:以守護進程模式運行容器。 -
-p 2222:22
:將宿主機的 2222 端口映射到容器的 22 端口。 -
python-ssh:latest
:指定要運行的鏡像。
4. 遠程連接
現在,你可以使用 SSH 客戶端從宿主機遠程連接到容器:
ssh root@localhost -p 2222
當提示輸入密碼時,輸入之前在 Dockerfile
中設置的密碼(這里是 password
)。
注意事項
-
安全風險:允許
root
用戶通過 SSH 登錄存在一定的安全風險,建議在生產環境中使用非root
用戶進行 SSH 登錄。 -
密碼管理:建議使用更復雜的密碼,并定期更換密碼以提高安全性。
使用python-ssh鏡像
-
根據該鏡像創建容器
-
鏡像的端口必須映射到宿主機的,方便window上的工具連接 mx xshell window的終端 vscode,如果沒有映射到宿主機,win上的工具就無法連接到這個容器,一般來說我們會將容器的22端口映射到宿主機的222端口,為什么不能直接映射到宿主機的22,因為宿主機的22已經被展鴻
-
建議添加掛載卷,應為docker容器被rm以后,數據都丟失,而掛載卷的中數據會保留在宿主機上
docker run -itd -p222:22 -v /pythonfile:/pytonfile python-ssh:2.0
-p222:22 將容器的22端口映射到宿主機的222端口,當用戶訪問宿主機的222端口相當于直接訪問容器的22端口
-v /pythonfile:/pythonfile 將蘇主機上的/pythonfile目錄掛載在容器的/pythonfile
掛載的卷的名字 可以不通。-v a:b
在容器或者宿主機上的文件操作,在在宿主機上或者容器上同步共享,也就說,在宿主機上添加文件,在容器內可以查看到,反之亦然
-v a:b a和b兩個目錄不需要提前創建,docker run指令會自動創建
-
-
設置防火墻
#systemctl disable --now firewalld
systemctrl enable --now firewalld
# 查看已經開放的端口
firewall-cmd --list-ports
# 關閉端口
firewall-cmd --zone=public --remove-port=80/tcp --permanent
# 重載
firewall-cmd --reload
# 添加端口
firewall-cmd --zone-public --add-port=222/tcp --permanent
# 重載
firewall-cmd --reload
vscode實現遠程開發
-
打開vscode
-
找到左側邊上的 擴展/e xtend,添加組建 remote-ssh
-
添加完成后在vscode的左側會出現遠程資源管理器的工具
-
打開遠程資源管理器
-
在指定的文本框中輸入 賬號,@ ,ip或者域名 : 2222
-
關閉防火墻,在防火墻上打開端口