docker python:latest鏡像 允許ssh遠程

  1. 跳轉到家目錄

    cd
    
  2. 創建pythonsshdockerfile

    mkdir pythonsshdockerfile
    
  3. 跳轉pythonsshdockerfile

    cd pythonsshdockerfile
    
  4. 創建Dockerfile文件

    vim Dockerfile
    
  5. 將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"]

  1. 根據Dockerfile創建新的鏡像

    docker build -t python-ssh:2.0 .
    
  2. 查看鏡像

    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鏡像

  1. 根據該鏡像創建容器

    1. 鏡像的端口必須映射到宿主機的,方便window上的工具連接 mx xshell window的終端 vscode,如果沒有映射到宿主機,win上的工具就無法連接到這個容器,一般來說我們會將容器的22端口映射到宿主機的222端口,為什么不能直接映射到宿主機的22,因為宿主機的22已經被展鴻

    2. 建議添加掛載卷,應為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指令會自動創建
  2. 設置防火墻

    #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實現遠程開發

  1. 打開vscode

  2. 找到左側邊上的 擴展/e xtend,添加組建 remote-ssh

  3. 添加完成后在vscode的左側會出現遠程資源管理器的工具

  4. 打開遠程資源管理器

  5. 在指定的文本框中輸入 賬號,@ ,ip或者域名 : 2222

  6. 關閉防火墻,在防火墻上打開端口

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/73305.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/73305.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/73305.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

c++的基礎排序算法

一、快速排序 1. 選擇基準值(Pivot) 作用 :從數組中選擇一個元素作為基準(Pivot),用于劃分數組。常見選擇方式 : 固定選擇最后一個元素(如示例代碼)。隨機選擇&#xf…

焊接機器人與線激光視覺系統搭配的詳細教程

以下是關于焊接機器人與線激光視覺系統搭配的詳細教程,包含核心程序框架、調參方法及源碼實現思路。本文綜合了多個技術文檔與專利內容,結合工業應用場景進行系統化總結。 一、系統硬件配置與視覺系統搭建 1. 硬件組成 焊接機器人系統通常由以下模塊構…

jmeter分布式原理及實例

一、執行原理 二、相關注意事項 關閉防火墻所有上網控制機、代理機、服務器都在同一個網絡上所有機器的jmeter和java版本必須一致關閉RMI.SSL開關 三、配置和執行 配置: 修改bin/jmeter.properties文件: 代理機: 修改服務端口&#xff1…

LinuX---Shell腳本創建和執行

概述: 它是一個命令行解釋器,接收應用程序/用戶命令,然后調用操作系統內核。 Shell還是一個功能強大的編程語言,易編寫、易調試、靈活性強。 Linux提供的Shell解析器有 atguiguubuntu:~$ cat /etc/shells # /etc/shells: valid …

FPGA中級項目1——IP核(ROM 與 RAM)

FPGA中級項目1——IP核(ROM 與 RAM) IP核簡介 在 FPGA(現場可編程門陣列)設計中,IP 核(Intellectual Property Core,知識產權核)是預先設計好的、可重用的電路模塊,用于實…

PCL 點云OBB包圍盒(二)

文章目錄 一、簡介二、實現步驟二、實現代碼三、實現效果參考資料一、簡介 包圍盒是一種求解離散點集最優包圍空間的算法,基本思想是用體積稍大且特性簡單的幾何體(稱為包圍盒)來近似地代替復雜的幾何對象。(來源于百度)常用的求解包圍盒的算法主要有AABB和OOB算法,但AAB…

第九節:哈希表(初階)

1. 哈希表的核心概念 哈希表(Hash Table)是一種通過哈希函數將鍵(Key)映射到存儲桶(Bucket)的數據結構,核心目標是實現快速查找、插入和刪除操作。其核心特點如下: ?哈希函數&…

【Visio使用教程】

Visio使用教程 1. Visio 的基本介紹1.1 Visio 是什么?核心特點: 1.2 主要功能與應用場景典型用途:行業應用: 1.3 版本與兼容性1.4 Visio下載1.5 安裝 2. Visio 的界面與基礎操作2.1 界面布局詳解2.2 創建新文檔與模板選擇2.3 形狀…

緩存使用的具體場景有哪些?緩存的一致性問題如何解決?緩存使用常見問題有哪些?

緩存使用場景、一致性及常見問題解析 一、緩存的核心使用場景 1. 高頻讀、低頻寫場景 典型場景:商品詳情頁、新聞資訊、用戶基本信息。特點:數據更新頻率低,但訪問量極高。策略: Cache-Aside(旁路緩存)&a…

谷歌 Gemini 2.0 Flash實測:1條指令自動出圖+配故事!

今天看到很多人夸Gemini 2.0 Flash的能力很強。 強大的P圖能力,改背景、換衣服、調整姿態、表情控制等等 其中最讓人眼前一亮的是圖文功能。 它不僅是理解圖文,而是能根據文字描述創作出一整個的故事、步驟圖文。 我上手試了一下,感覺效果…

雷電模擬器連接Android Studio步驟

打開雷電模擬器,點擊桌面系統應用—>打開設置—>關于平板電腦→連續點擊5次版本號,會出現開發者選項—->進入開發者選項—->勾選打開usb調試。 命令行提示符,進入雷電模擬器安裝目錄。然后執行 Plain Text adb.exe connect 127.0…

配置普通鏈接二維碼規則 校驗文件檢查失敗

配置普通鏈接二維碼規則 校驗文件檢查失敗 1.問題 2.解決思路: 直接訪問地址,不跳轉文本,感覺是nginx配置問題打開服務器nginx 域名默認走80端口,配置了指定的訪問路徑,命令行 nginx -t ,nginx -s reload,start ngin…

c語言經典基礎編程題

c語言經典基礎編程題 一、輸出輸出1.1溫度輸出1.2排齊數據1.3進制轉換 二、選擇分支2.1求最大值2.2成績評定2.3分段函數求值2.4 利潤計算2.5判斷閏年2.6二次方程根 三、循環結構3.1倒數求和3.2最大數3.3判斷素數3.4判斷完全數3.5打印菱形🚀🚀&#x1f68…

java數據處理:Map<String, Object>、Map<String, List<Room>>、Map<String, Integer>

已知數據都存在WargameConfig.HallMap里。 一、Map<String, Integer> 需求:按照scenarioName進行分類,統計每種scenarioName下的Room對象有多少; 思路:統計一個名為WargameConfig.HallMap的集合中,每個不同場景名稱(scenarioName)出現的次數。返回一個鍵值對映射…

安全的實現數據備份和恢復

&#x1f4d5;我是廖志偉&#xff0c;一名Java開發工程師、《Java項目實戰——深入理解大型互聯網企業通用技術》&#xff08;基礎篇&#xff09;、&#xff08;進階篇&#xff09;、&#xff08;架構篇&#xff09;清華大學出版社簽約作家、Java領域優質創作者、CSDN博客專家、…

TCP網絡協議

TCP粘包 1. TCP在接收數據時&#xff0c;多包數據粘在了一起 2. 原因&#xff1a; 1. TCP發送數據時&#xff0c;沒有及時發走&#xff0c;會根據緩沖區數據的情況進行重新組包&#xff1b; 2. TCP接收方&#xff0c;沒有及時讀走緩沖區數據&#xff0c;導致緩沖區大量數…

ES6回顧:閉包->(優點:實現工廠函數、記憶化和異步實現)、(應用場景:Promise的then與catch的回調、async/await、柯里化函數)

閉包講解 ES6回顧&#xff1a;閉包->(優點&#xff1a;實現工廠函數、記憶化和異步實現&#xff09;、&#xff08;應用場景&#xff1a;Promise的then與catch的回調、async/await、柯里化函數&#xff09; 以下是與 JavaScript 閉包相關的常見考點整理&#xff0c;結合 Pro…

OpenMCU(三):STM32F103 FreeRTOS移植

概述 本文主要描述了STM32F103移植FreeRTOS的簡要步驟。移植描述過程中&#xff0c;忽略了Keil軟件的部分使用技巧。默認讀者熟練使用Keil軟件。本文的描述是基于OpenMCU_RTOS這個工程&#xff0c;該工程已經下載放好了移植STM32F103 FreeRTOS的所有文件 OpenMCU_RTOS工程的愿景…

生成對抗網絡(GAN)原理與應用

目錄 一、引言 二、GAN的基本原理 &#xff08;一&#xff09;生成器&#xff08;Generator&#xff09;的工作機制 &#xff08;二&#xff09;判別器&#xff08;Discriminator&#xff09;的工作機制 &#xff08;三&#xff09;對抗訓練的過程 三、GAN在AIGC生圖中的應…

STM32 內置的通訊協議

數據是以幀為單位發的 USART和UART的區別就是有沒有同步功能 同步是兩端設備有時鐘連接&#xff0c;異步是沒時鐘連接&#xff0c;靠約定號的頻率&#xff08;波特率&#xff09;接收發送數據 RTS和CTS是用來給外界發送已“可接收”或“可發送”信號的&#xff0c;一般用不到…