引言
相信大家都或多或少听过vs code这个东西,它不仅有好看的界面,还有飞快的启动速度与令人舒适的深色模式配色。那么如果我们担心本地数据的安全或者需要多人合作一个项目,那就很需要一个公共的环境让大家发挥。
本文讲详细讲解如何安装Docker配置Python环境并且通过vs code的远程连接连接到远程工作区。
准备工作
- 一台服务器或者一个Linux环境
- 畅通无阻的网络
但愿你能听懂或者Docker的镜像站(下文我会展示 - 狂妄的自信心
正文
安装Docker
首先区分一下Docker的服务端和客户端
| Docker | 服务端 | 客户端 |
| 名称 | docker.io | docker-cli |
我们需要安装的是Docker的服务端
sudo apt install docker.io
验证安装
docker --version
配置Docker自启动
sudo systemctl enable docker sudo systemctl start docker
配置自己的image
我们可以通过Dcokerfile来配置自己的镜像,免得每次都要apt一堆东西
本文的环境是基于python:3.12-slim-bookworm构建的
换源(可选)
Docker自带的源在国内是上不了一点,所以我们执行换源操作
sudo cp /etc/docker/daemon.json /etc/docker/daemon.json.bak //备份文件 sudo vim /etc/docker/daemon.json
在"registry-mirrors": [" "]的双引号中间添加你自己的镜像地址
本文提供一个地址
> https://mirrors-ssl.aliyuncs.com/
构建Dockerfile
选择一个你喜欢的地方,新建Dockerfile,注意大小写
FROM python:3.12-slim-bookworm
#创建好必须的目录,并且设置权限
RUN mkdir -p /data/workspace /data/tmp \
&& chmod -R 777 /data/workspace /data/tmp
ENV WORKSPACE=/data/workspace
ENV TMPDIR=/data/tmp
ARG TMPDIR=/data/tmp
# 删除默认的 trixie 源
RUN rm -f /etc/apt/sources.list.d/debian.sources
# 换源
RUN printf "%s\n" \
"deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bookworm main contrib non-free non-free-firmware" \
"deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bookworm-updates main contrib non-free non-free-firmware" \
"deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bookworm-backports main contrib non-free non-free-firmware" \
"deb https://mirrors.tuna.tsinghua.edu.cn/debian-security bookworm-security main contrib non-free non-free-firmware" \
> /etc/apt/sources.list \
&& apt update
# 安装基础依赖(Debian 系)
RUN apt update && apt install -y \
openssh-server --no-install-recommends \
curl unzip git wget vim \
locales \
fonts-noto-cjk \
tzdata \
webp \
&& apt clean \
&& rm -rf /var/lib/apt/lists/*
# 配置 SSH 通过公钥-密钥连接更安全
RUN mkdir /var/run/sshd \
&& sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config \
&& sed -i 's/#PasswordAuthentication yes/PasswordAuthentication yes/' /etc/ssh/sshd_config \
&& sed -i 's/UsePAM yes/UsePAM no/' /etc/ssh/sshd_config \
&& sed -i 's/#Port 22/Port 2234/' /etc/ssh/sshd_config \
&& sed -i 's/#PubkeyAuthentication yes/PubkeyAuthentication yes/' /etc/ssh/sshd_config \
&& sed -i 's/#AuthorizedKeysFile/AuthorizedKeysFile/' /etc/ssh/sshd_config \
&& sed -i 's/PasswordAuthentication yes/PasswordAuthentication no/' /etc/ssh/sshd_config
# 生成中文 locale
RUN sed -i '/en_US.UTF-8/s/^# //g' /etc/locale.gen \
&& sed -i '/zh_CN.UTF-8/s/^# //g' /etc/locale.gen \
&& locale-gen
# 字符集环境变量
ENV LANG=zh_CN.UTF-8
ENV LANGUAGE=zh_CN:zh
ENV LC_ALL=zh_CN.UTF-8
# 设置时区
ENV TZ=Asia/Shanghai
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
# pip 国内源
RUN mkdir -p /root/.pip \
&& python -m pip install -i https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple --upgrade pip \
&& pip config set global.index-url https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple
# 创建工作目录
WORKDIR $WORKSPACE
RUN mkdir -p $WORKSPACE $TMPDIR \
&& chmod -R 777 $WORKSPACE $TMPDIR
# 暴露 SSH 端口
EXPOSE 2234
# 启动 SSH 服务
CMD ["/usr/sbin/sshd", "-D"]
保存后构建镜像
sudo docker build -t 镜像名称:版本 .
接下来编写docker-compose.yml用于创建容器
services:
python:
image: 镜像名称:版本
container_name: 容器名称
network_mode: bridge ##建议使用bridge网络模式
restart: always
working_dir: /root/
volumes:
- ~/code/:/root/code/ ##左边是主机目录右边是容器目录
tty: true
stdin_open: true
ports:
- "2234:2234" ##SSH端口
创建容器
sudo docker compose up -d sudo docker ps
如果你能看到像这样就是容器跑起来了,我的容器叫vscode

配置SSH
在本地电脑打开powershell生成公钥密钥
ssh-keygen -t ed25519 -C "备注"
来生成一个公钥文件id_ed25519.pub和密钥文件id_ed25519,接着把公钥文件的内容复制,进入容器的bash
sudo docker exec -it 容器名称 bash echo "你的公钥内容" > ~/.ssh/authorized_keys
退出容器后重启容器docker restart 你的容器名
vscode连接
点击vscode界面最左下角的远程连接按钮

点击顶部搜索栏的连接到主机-添加新的SSH主机


输入root@服务器IP -p 2234连接即可
结尾
本文清晰明白的介绍了如何在docker中配置Python环境,选用docker的原因很重要的就是它的可迁移性,就是你电脑上能跑服务器也能跑,不用花时间不停的apt isntall,如果大家有什么问题尽情在评论区提出来,作者是个活人,经常看的,你们的关注就是我最大的动力
评论