如何搭建TRAE IDE 连接到容器开发环境

参考文档:

如何使用 Trae 连接到 Devbox 启动的 Docker

trae链接到服务器的docker环境

1 首先确保你的容器内有 OpenSSH 服务

以ubuntu系统为例,选择示例的其中一种方法即可。

1.1 Docker 示例1:使用dockerfile创建一个新容器

  1. 步骤1:创建容器可以将下面文件保存在一个bash脚本中,如trae-docker.sh
Bash 复制代码
mkdir -p temp_docker
cat > temp_docker/Dockerfile <<'EOF'
FROM <your_image>
RUN apt-get update && apt-get install -y openssh-server
RUN mkdir /var/run/sshd
RUN echo <'root:123'> | chpasswd
RUN sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config
EXPOSE 22
CMD ["/usr/sbin/sshd", "-D"]
EOF
cd temp_docker
docker build -t <docker-image> .
启动 Docker 并暴露 SSH 服务:
  • <your_image>:替换为需要的基础镜像名称

  • <'root:123'>:设置root的账号密码,这里设置为123

  • <docker-image>:构建的docker的目标镜像名称

比如:我完整的trae-docker.sh文件是:

Bash 复制代码
mkdir -p temp_docker
cat > temp_docker/Dockerfile <<'EOF'
FROM swr.cn-south-1.myhuaweicloud.com/ascendhub/cann:9.1.0-beta.1-950-ubuntu22.04-py3.12-devel
RUN apt-get update && apt-get install -y openssh-server
RUN mkdir /var/run/sshd
RUN echo 'root:123' | chpasswd
RUN sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config
EXPOSE 22
CMD ["/usr/sbin/sshd", "-D"]
EOF
cd temp_docker
docker build -t trae-docker .
  1. 步骤2:执行trae-docker.sh
Bash 复制代码
[jun@localhost jun]$ bash trae-docker.sh
Sending build context to Docker daemon  2.048kB
Step 1/7 : FROM swr.cn-south-1.myhuaweicloud.com/ascendhub/cann:9.1.0-beta.1-950-ubuntu22.04-py3.12-devel
 ---> db3ee0438d53
Step 2/7 : RUN apt-get update && apt-get install -y openssh-server
 ---> Running in 6925413c114b
Get:1 http://security.ubuntu.com/ubuntu jammy-security InRelease [129 kB]
Hit:2 http://archive.ubuntu.com/ubuntu jammy InRelease
Get:3 http://archive.ubuntu.com/ubuntu jammy-updates InRelease [128 kB]
Get:4 http://security.ubuntu.com/ubuntu jammy-security/universe amd64 Packages [1312 kB]
Get:5 http://archive.ubuntu.com/ubuntu jammy-backports InRelease [127 kB]
Get:6 http://archive.ubuntu.com/ubuntu jammy-updates/universe amd64 Packages [1615 kB]
Get:7 http://security.ubuntu.com/ubuntu jammy-security/restricted amd64 Packages [7332 kB]
Get:8 http://archive.ubuntu.com/ubuntu jammy-updates/main amd64 Packages [4426 kB]
Get:9 http://security.ubuntu.com/ubuntu jammy-security/main amd64 Packages [4089 kB]
Get:10 http://archive.ubuntu.com/ubuntu jammy-updates/restricted amd64 Packages [7619 kB]
Get:11 http://archive.ubuntu.com/ubuntu jammy-backports/universe amd64 Packages [35.6 kB]
Get:12 http://archive.ubuntu.com/ubuntu jammy-backports/main amd64 Packages [82.8 kB]
...
...
...
 ---> 851ce430c82e
Step 3/7 : RUN mkdir /var/run/sshd
 ---> Running in daf7ff502b1f
Removing intermediate container daf7ff502b1f
 ---> b322c196eb4e
Step 4/7 : RUN echo 'root:123' | chpasswd
 ---> Running in d4f46c6cdcfe
Removing intermediate container d4f46c6cdcfe
 ---> 144bf3af6ce6
Step 5/7 : RUN sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config
 ---> Running in 444a1973aa70
Removing intermediate container 444a1973aa70
 ---> e574a8379422
Step 6/7 : EXPOSE 22
 ---> Running in d068032d1448
Removing intermediate container d068032d1448
 ---> 5af58666f4c5
Step 7/7 : CMD ["/usr/sbin/sshd", "-D"]
 ---> Running in 927d748a2e05
Removing intermediate container 927d748a2e05
 ---> 1efd925ac498
Successfully built 1efd925ac498
Successfully tagged trae-docker:latest
  1. 步骤3:启动 Docker 并暴露 SSH 服务
Bash 复制代码
docker run -d -p2222:22 trae-docker

1.2 Docker 示例2:基于已有容器创建

  1. 步骤1:创建容器
Bash 复制代码
docker run -itd --name <trae-docker> -p 2222:22 -e DISPLAY=$DISPLAY --dns 8.8.8.8 --dns 114.114.114.114  <osrf/ros:humble-desktop-full> /bin/bash

ssh默认端口是22,将2222映射到22使得本地能访问,DISPLAY=$DISPLAY为了docker显示图片,dns不设置的话docker里面ssh安装不上!

  • <trae-docker>:定义名称

  • <osrf/ros:humble-desktop-full>:基础镜像名称

完整命令如:

Bash 复制代码
[jun@localhost jun]$ docker run -itd --name trae-docker-1 -p 2222:22 -e DISPLAY=$DISPLAY --dns 8.8.8.8 --dns 114.114.114.114  swr.cn-south-1.myhuaweicloud.com/ascendhub/cann:9.1.0-beta.1-950-ubuntu22.04-py3.12-devel /bin/bash
35abc26d0c3f870a41958720412bd55242b7ee65ae62d9520072b1a9b83c2fbe
  1. 步骤2:在docker里面安装ssh

进入容器

Bash 复制代码
docker exec -it trae-docker-1 /bin/bash

安装ssh并启动sshd服务:

Bash 复制代码
apt-get update
apt-get install -y openssh-server
sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config
echo 'root:123' | chpasswd
service ssh start

密码123可以自己改。

2 桌面IDE端进行连接验证

2.1 Docker 示例1:使用dockerfile创建一个新容器

69b25f901b6a是创建的容器,表明在容器是能够直接连通的。

2.2 Docker 示例2:基于已有容器创建

35abc26d0c3f是创建的容器,表明在容器是能够直接连通的。

3 桌面端IDE端,配置以下 ~/ssh/config

  1. 步骤1:在docker里面安装ssh
Plain 复制代码
Host <linux>
    HostName <10.x.x.x>
    User <root>

Host <docker-container>
    HostName <10.x.x.x>
    Port 2222
    User root
    StrictHostKeyChecking no
    UserKnownHostsFile /dev/null
  • <linux>:linux服务器的名称,ip或者自定义命名都行

  • <root>:linux服务器账户名称和容器名称,可以是不同账户。

  • <10.x.x.x>:inux服务器的ip

  • <docker-container>:容器的名字,同样自定义命名就行。

比如配置如下:

步骤2:重启IDE

重启IDE后,就会看到"SSH连接目标"中看配置后的docker容器,然后连接:

不出意外的话,连接成功之后,如下:

69b25f901b6a是创建的容器,表明已连接成功了。

4 备注

关于以下2个选项的配置建议不配置,我这边配置后是连接失败的。

Bash 复制代码
HostName localhost
ProxyJump A5
相关推荐
guo_wen_qiang9 小时前
docker的备份与迁移
运维·docker·容器
小小龙学IT12 小时前
Kubernetes 深度实践:架构、API 与避坑指南
容器·架构·kubernetes
cpolar技术支持14 小时前
外网测试机的异常传不回内网?自托管 Sentry,用 cpolar 打通错误上报链路
python·nginx·docker·cpolar·sentry
MrSYJ17 小时前
别人再问你路由表是啥,这篇文章摔它脸上
docker·云原生·kubernetes
羑悻18 小时前
穿越Docker内核迷雾:揭秘镜像分层存储的叠加态与卷挂载的多维空间穿梭技术
后端·docker·容器
for_ever_love__18 小时前
容器类型全家桶——list、tuple、dict、set 与推导式
python·容器·数据类型·大模型开发
筑梦之路19 小时前
docker-compose方式部署kafka集群(Kraft方式)——筑梦之路
docker·容器·kafka
JavaPub-rodert19 小时前
Docker 镜像地址总失效?基于 DockerHub 项目用 GitHub Actions 做一个自动检测状态页
docker·容器·github
天衍四九-20 小时前
Docker 进阶实战系列(一):容器镜像安全,最小镜像与非 Root 运行
安全·docker·eureka
天衍四九-20 小时前
Docker进阶实战系列(二):容器日志深度治理|驱动配置、自动切割、磁盘爆满彻底解决
docker·容器·eureka