vscode+docker搭建迷你开发环境。制作docker镜像,并通过vscode连接后进行开发
创始人
2025-01-07 02:32:38
0

制作自己的docker镜像,将docker镜像作为服务器,接受vscode连接

目录

1. 制作开发环境镜像

1.1 选择基础镜像

1.2 编写dockerfile

1.3 构建镜像

2. 启动镜像

3. 添加用户

3.1 查看物理机上用户信息

3.2 登录到docker中

3.3 按照物理机的用户和组id增加用户

4. 使用vscode连接

4.1 vscode添加ssh配置

4.2 vscode连接docker

4.3 打开工作目录

4.4 查看共享目录

然后就是下载代码并开始后续的开发工作了


分 4 步

  • (1)制作ubuntu20.04的开发环境

  • (2)启动镜像实例,将其作为开发环境

  • (3)添加用户(权限对齐物理开发机),可访问宿主开发机目录

  • (4)通过ssh或者vscode远程登录

1. 制作开发环境镜像

1.1 选择基础镜像

在dockerhub上找基础镜像 Docker Hub

这里以ubuntu20.04为例

1.2 编写dockerfile

基于ubuntu20.04的基础镜像,安装C++开发工具

FROM ubuntu:20.04 AS ubuntu20.04-base LABEL author="authorname" ENV DEBIAN_FRONTEND=noninteractive  # 1. 基础环境 # 1.1 切换国内源 RUN sed -i s@/archive.ubuntu.com/@/mirrors.tuna.tsinghua.edu.cn/@g /etc/apt/sources.list RUN apt-get clean && apt-get update  # 1.2 安装基础包 RUN apt-get -yq install apt-utils vim git tmux bash-completion \     curl sudo locales gnupg lsb-release language-pack-zh-hans \     python3-pip openssh-server  # 1.3 语言 RUN locale-gen en_US en_US.UTF-8 RUN update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8 ENV LANG=en_US.UTF-8  # 1.4 添加docker和root用户 SHELL ["/bin/bash", "-o", "pipefail", "-c"] RUN useradd -rm -d /home/docker -s /bin/bash -g root -G sudo docker RUN echo 'docker:docker' | chpasswd RUN echo 'root:Aa123456' | chpasswd USER docker WORKDIR /home/docker  # 2. 安装ssh服务 FROM ubuntu20.04-base AS ubuntu20.04-base-sshd USER root # 2.1 ssh服务配置 # SSH login fix. Otherwise user is kicked off after login RUN sed 's@session\s*required\s*pam_loginuid.so@session optional pam_loginuid.so@g' -i /etc/pam.d/sshd RUN sed -i 's/\#PubkeyAuthentication\ yes/PubkeyAuthentication\ yes/' /etc/ssh/sshd_config && \     sed -i 's/\#PasswordAuthentication\ yes/PasswordAuthentication\ yes/' /etc/ssh/sshd_config && \     sed -i 's/\#X11Forwarding\ no/X11Forwarding\ yes/' /etc/ssh/sshd_config && \     sed -i 's/\#AllowTcpForwarding\ yes/AllowTcpForwarding\ yes/' /etc/ssh/sshd_config && \     sed -i 's/\#AllowAgentForwarding\ yes/AllowAgentForwarding\ yes/' /etc/ssh/sshd_config RUN mkdir /var/run/sshd RUN bash -c 'install -m755 <(printf "#!/bin/sh\nexit 0") /usr/sbin/policy-rc.d' RUN ex +'%s/^#\zeListenAddress/\1/g' -scwq /etc/ssh/sshd_config RUN ex +'%s/^#\zeHostKey .*ssh_host_.*_key/\1/g' -scwq /etc/ssh/sshd_config RUN RUNLEVEL=1 dpkg-reconfigure openssh-server RUN ssh-keygen -A -v RUN update-rc.d ssh defaults  # 3. sudo配置 RUN ex +"%s/^%sudo.*$/%sudo ALL=(ALL:ALL) NOPASSWD:ALL/g" -scwq! /etc/sudoers  FROM ubuntu20.04-base-sshd AS ubuntu20.04-dev  # 4. ssh指纹可免密登录 # Generate and configure user keys. USER docker WORKDIR /home/docker RUN ssh-keygen -t rsa -b 4096 -C "xxx@gmail.ai" -f ~/.ssh/id_rsa_xxx_gmail -q -N ""  # 5. 基础开发环境 # 更新镜像的包索引并安装必要的软件包 RUN sudo apt-get install -yq \     cmake \     g++ \     gdb \     pkg-config  # 6. 默认启动命令 ENTRYPOINT sudo service ssh restart && bash 

1.3 构建镜像

构建带有C++开发环境的新镜像

docker build -t myubuntu20.04:0.1 . 

2. 启动镜像

  • 将docker的ssh端口22映射到物理机的2222

  • 将docekr的/mnt目录映射到物理机的/mnt/users/software目录

docker run -d -t -p 2222:22 --name ubuntu20.04_for_software -v /mnt:/mnt/users/software myubuntu20.04:0.1 

3. 添加用户

为了保证docker机和开发机的用户权限一致,我们需要按照权限添加用户

假设现在要将用户名为cpf的用户添加到docker中,为了docker中用户能够访问物理机的目录,我们保证docker中的用户和物理机用户在同一组内

3.1 查看物理机上用户信息

在开发机上查看用户cpf的用户信息

# 有root权限可以直接查看 cat /etc/passwd | grep cpf # 无root权限,用户登录后查看 id -u && id -g 

3.2 登录到docker中

制作镜像的时候已经在docker里增加了docker用户,因此直接使用docker用户登录

# 在docker所在的物理机可以通过两种方式登录到docker中 # 1. 通过docker命令登录:docker exec -it ubuntu20.04_for_software /bin/bash # 2. 通过ssh登录 ssh docker@127.0.0.1 -p2222 # 在其他设备上也可以通过ssh登录,10.31.2.204为docker所在物理机的IP地址 ssh docker@10.31.2.204 -p2222 

3.3 按照物理机的用户和组id增加用户

# 1. 以用户和组id为1000来添加cpf用户到cpf组 sudo groupadd cpf -g 1000 sudo useradd -g cpf -ms /bin/bash cpf -u 1000 # 2. 如果需要sudo权限 # sudo usermod -aG sudo cpf # 3. 修改cpf用户的密码 # 删除原密码 sudo passwd -d cpf # 切换到cpf并修改密码 sudo su - cpf passwd 

4. 使用vscode连接

4.1 vscode添加ssh配置

点击图标

添加配置并保存

4.2 vscode连接docker

刷新后连接

输入密码并回车

连接成功后点击添加目录

4.3 打开工作目录

点击打开文件夹,然后输入文件夹,默认是打开home目录

4.4 查看共享目录

打开终端

docker中查看目录

然后就是下载代码并开始后续的开发工作了

一起学习,一起进步

相关内容

热门资讯

绝活儿辅助!广西老友玩老是输怎... 绝活儿辅助!广西老友玩老是输怎么办(辅助挂)都是真的有辅助app(讲解有挂)在进入广西老友玩老是输怎...
法门辅助!福建13水插件(辅助... 法门辅助!福建13水插件(辅助挂)一贯是有辅助技巧(有挂技术)1、许多玩家不知道福建13水插件辅助怎...
办法辅助!潮友会app下载官方... 办法辅助!潮友会app下载官方辅助器(辅助挂)真是真的是有辅助app(有挂教程)该软件可以轻松地帮助...
妙招辅助!邯郸胡乐挂辅助(辅助... 妙招辅助!邯郸胡乐挂辅助(辅助挂)好像存在有辅助插件(有挂方略)1、上手简单,内置详细流程视频教学,...
教程书辅助!乐酷辅助(辅助挂)... 教程书辅助!乐酷辅助(辅助挂)其实存在有辅助脚本(有挂细节)乐酷辅助能透视中分为三种模型:乐酷辅助模...
学习辅助!决战卡五星辅助(辅助... 学习辅助!决战卡五星辅助(辅助挂)本来真的是有辅助软件(有人有挂)学习辅助!决战卡五星辅助(辅助挂)...
绝活辅助!边锋嘉兴麻将辅助器(... 绝活辅助!边锋嘉兴麻将辅助器(辅助挂)真是真的有辅助神器(新版有挂)1、边锋嘉兴麻将辅助器公共底牌简...
举措辅助!枫叶辅助器(辅助挂)... 举措辅助!枫叶辅助器(辅助挂)本来存在有辅助技巧(竟然有挂)1、下载好枫叶辅助器正确养号方法之后点击...
讲义辅助!点我达辅助(辅助挂)... 讲义辅助!点我达辅助(辅助挂)一直存在有辅助技巧(有人有挂)1、点我达辅助辅助器安装包、点我达辅助辅...
模块辅助!威信茶馆有挂的吗(辅... 模块辅助!威信茶馆有挂的吗(辅助挂)一直真的是有辅助脚本(揭秘有挂)1、玩家可以在威信茶馆有挂的吗线...