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. 关闭防火墙,在防火墙上打开端口

相关推荐
leisoo80975 小时前
100GBA股股票数据怎么存ClickHouseRedisMySQLJSON完整对比
大数据·linux·服务器·开发语言·python
WangYan20226 小时前
基于XGBoost与AI的生态—地学多源数据建模:植被与土地利用识别、土壤碳氮空间预测、生物多样性驱动机制、土壤微生物功能预测、生态退化与风险识别
python·机器学习·xgboost
梦梦代码精6 小时前
连锁品牌数字化:从门店扩张到用户资产运营的技术底座
大数据·人工智能·低代码·docker·开源·代码规范
金銀銅鐵8 小时前
[Python] 借助 turtle 逐字展示唐诗《金缕衣》
python
InfinitePlus9 小时前
Docker MySQL搭建一主一从
mysql·docker
Python大数据分析@10 小时前
使用大模型MCP采集数据,爬虫已经无门槛
python·网络爬虫
quantdash_cc10 小时前
告别自建 Requests/BS4 网页爬虫:基于 QuantDash 搭建零维保的高性能量化行情流水线
开发语言·爬虫·python·pandas·量化·quantdash
65岁退休Coder11 小时前
LangChain v1.3.4 笔记 - 07 补充:链式调用 LCEL
后端·python·langchain
卷无止境11 小时前
FastAPI 部署在 Nginx 后面到底该怎么配
后端·python
半亩码田11 小时前
C#转Python第3.1篇:Python 的 class 没有访问修饰符?面向对象的另一条路
开发语言·python·c#