使用 VSCode 连接 Docker 中的 SSHD

在现代开发环境中,许多开发者和 DevOps 工程师使用 Docker 来构建和管理容器化应用。为了从 Visual Studio Code(VSCode)直接连接到 Docker 中的 SSHD,我们需要完成几步简单的设置。本文将为您提供一份详细的操作指南,帮助您有效地连接和管理您的 Docker 容器。

为什么使用 Docker 和 SSHD?

Docker 确保了开发环境的统一,而 SSHD 允许我们通过安全的方式远程登录到容器中。这两者结合使用,可以让我们在开发、测试、和部署阶段更高效。

环境准备

在开始之前,确保您具备以下环境:

  1. Docker: 确保 Docker 已安装并在运行。
  2. VSCode: 需要安装 Visual Studio Code,并建议安装 Remote - SSH 插件。
  3. 适合的容器: 本文将基于 Ubuntu 容器进行示例。

创建 Docker 容器

首先,您需要创建一个运行 SSHD 服务的 Docker 容器。以下是构建简单 SSH 服务器的 Dockerfile 示例:

# Dockerfile
FROM ubuntu:latest

# 更新包列表并安装 openssh-server
RUN apt-get update && \
    apt-get install -y openssh-server && \
    mkdir /var/run/sshd

# 设置 root 用户密码
RUN echo 'root:password' | chpasswd

# 允许 root 用户通过 SSH 登录
RUN sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config

# 暴露 SSH 端口
EXPOSE 22

# 启动 SSH 服务
CMD ["/usr/sbin/sshd", "-D"]

使用上述 Dockerfile,您可以通过以下命令构建映像并运行容器:

# 构建 Docker 镜像
docker build -t my_ssh_server .

# 运行 Docker 容器
docker run -d -p 2222:22 --name my_ssh_container my_ssh_server

在此示例中,我们将容器的 SSH 端口映射到宿主机的 2222 端口。

验证 SSHD 服务

要确保 SSHD 服务运行正常,可以通过以下命令查看容器日志:

docker logs my_ssh_container

接下来,您可以尝试通过 SSH 连接到容器:

ssh root@localhost -p 2222

使用上面命令时,请输入您在 Dockerfile 中设置的密码 password

在 VSCode 中配置 SSH 连接

  1. 打开 VSCode。
  2. 安装并启用 Remote - SSH 插件。
  3. 在左侧栏中点击 Remote Explorer ,然后选择 SSH Targets。
  4. 点击 Add New SSH Host

配置 SSH 连接

在弹出的对话框中,输入 SSH 主机的信息:

ssh root@localhost -p 2222

之后,它会询问您要将配置保存到哪个文件,通常选择默认的 ~/.ssh/config 文件即可。

保存后的内容大致如下:

Host my_ssh_container
    HostName localhost
    User root
    Port 2222

连接到 Docker 容器

  1. 回到 Remote Explorer,找到您刚刚添加的目标。
  2. 点击目标,然后选择 Connect to Host

成功连接与探索

成功连接后,您会看到 VSCode 底部的状态栏显示连接的主机信息。您可以像使用本地环境一样使用终端和文件资源管理器。代码编辑、文件管理、及命令行操作都可以轻松实现。

旅行图示例

接下来,用以下 Mermaid 语法来展示连接过程的旅程:

journey
    title VSCode 连接 Docker SSHD 的旅程
    section 环境准备
      安装 Docker: 5: User
      安装 VSCode: 5: User
      安装 Remote - SSH 插件: 5: User
    section 创建容器
      编写 Dockerfile: 4: User
      构建与运行容器: 4: User
    section 连接配置
      通过 SSH 连接测试: 3: User
      配置 VSCode 连接: 4: User
      成功连接到容器: 5: User

结论

通过以上步骤,您就可以使用 Visual Studio Code 方便地连接和管理 Docker 中的 SSHD。这一过程使得代码编辑和调试变得更加高效,为开发者带来很大的便利。希望本文能帮助你在容器开发的道路上更加顺利,如有疑问欢迎留言讨论。继续探索 Docker 和 VSCode,你的开发之旅将更加精彩!