VS code远程连接linux服务器中docker里的python |
您所在的位置:网站首页 › vscode远程开发python › VS code远程连接linux服务器中docker里的python |
VS code远程连接linux服务器中docker里的python
环境
linux:centos 7 python:3.10 vs code: 1.63 1.建目录首先,创建目录 python,用于存放后面的相关东西。 #在根目录下创建python/app文件夹 mkdir -p ~/python ~/python/myappmyapp 目录将映射为 python 容器配置的应用目录。 进入创建的 python 目录,创建 Dockerfile。 2.创建python3容器方法一: docker run -d --name mypython -p 8022:22 -v /automl:/workspace/automl -it python:latest /bin/bash -p 8022:22 把docker的端口22映射到服务器的8022端口,这样之后通过 ssh root@ -p 8022就能访问到docker了-d 容器后台运行,避免退出容器后容器自动关闭;-v 挂载和同步目录,这样服务器和docker内就有一个文件夹会试中保持同步了。-it 让docker后台交互运行python:latest 镜像名最后是docker内要运行的指令。方法二: #前提是docker已经存在 python:latest 镜像 docker run --name mypython -it python:latest -v $PWD/myapp:/usr/src/python -w /usr/src/python /bin/bash-i:交互操作 -t:终端 python:latest 对应的即为 REPOSITORY:TAG /bin/bash:这里我们希望有个交互式 Shell,因此用的是 /bin/bash -v $PWD/myapp:/usr/src/python 将主机中当前目录下的 myapp (先cd到当前目录,确保当前目录下有myapp文件夹)挂载到容器的/usr/src/python -w /usr/src/python 指定容器的 /usr/src/python 目录为工作目录 3.进入容器内配置 3.1添加ssh服务进入docker #查看mypython的容器id docker ps -a #进入容器ID为18f89ebd83aa的容器内部 docker exec -it 18f89ebd83aa /bin/bash在容器中输入以下内容,安装ssh服务 #apt是 Shell前端软件包管理命令 apt update apt install -y openssh-server输入vim /etc/ssh/sshd_config,打开ssh配置文件,修改以下内容,以允许root账户通过密码登录: 注释掉这行:PermitRootLogin prohibit-password 新建一行 添加:PermitRootLogin yes 说明: PermitRootLogin yes 允许root登录,设为yes。 PermitRootLogin prohibit-password 允许root登录,但是禁止root用密码登录 很明显这行是需要被注释掉的!!! 确保配置文件中这几项是如下内容 PubkeyAuthentication yes #启用公钥私钥配对认证方式 AuthorizedKeysFile .ssh/authorized_keys #公钥文件路径 PermitRootLogin yes #root能使用ssh登录要修改root用户的密码(在容器内) [root@*******]# passwd Changing password for user root. New password: Retype new password: passwd: all authentication tokens updated successfully.重启ssh,退出docker然后测试一下。 #重启ssh服务 /etc/init.d/ssh restart #另一个重启ssh服务的语句 #service ssh restart #退出容器 exit # 输入一下指令,验证端口映射无误 sudo docker port [容器ID] 22 # 如果设置正确,将输出: #0.0.0.0:8022备注: 退出docker后ssh connection refused. 原因:退出docker后,ssh会被关掉,先通过服务器docker exec进入container,然后输入以下指令启动ssh服务 /etc/init.d/ssh start在自己的笔记本上,打开cmd,输入ssh尝试连接 ssh username@server_IP -p 8022 # 回车后输入密码,就可以从本地登录远程服务器的docker了 4 配置VS Code打开VS code,在扩展栏(或者按ctr+shift+X)查找安装Remote Development 安装完成后需要reload一下,然后按ctr+shift+p,打开查找栏,输入remote-ssh,选择open Configuration file Host随便起名字,这里我用AutoML_docker命名。在HostName的地方输入服务器的ip,注意端口Port是我们之前docker映射到服务器上的端口号。 配置成功后左边会多出一个远程浏览的标签,点开就可以看到刚才配置的远程连接了。点击之后要输入密码,即我们创建docker后修改的root密码。 菜单查看-扩展或者Ctrl + Shift + X,在商店中搜索“Python”,找到“适Python extension for Visual Studio Code”安装在服务器docker中,然后重启VSCode。 之后,菜单查看-命令面板或者Ctrl + Shift + P,输入“python: select interpreter”,点击选择解析器,稍等几秒钟,就会列出在系统中找到的Python环境(Python环境要加入环境变量才能被找到),点击需要的python解析器即可。 出现找不到python的原因,很有可能是版本没装对。 应该是红框里的这个 打开debug选项卡,选择Add configuration 编辑launch.json文件如下: { // Use IntelliSense to learn about possible attributes. // Hover to view descriptions of existing attributes. // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 "version": "0.2.0", "configurations": [ { "type": "python", "request": "launch", "name": "Python: Current File (Integrated Terminal)", "skipFiles": [ "/**" ], "program": "${file}" } ] }launch.json常用的调试配置有: “Python: Current File (Integrated Terminal)”:该配置表示在VSCode内置的命令行中直接执行当前激活的Python文件。如果需要制定要执行的文件,可以修改"program": " f i l e " 中 的 {file}"中的 file"中的{file}宏为需要的文件。“Python: Current File (External Terminal)”:该配置功能和上面的相同,区别是不使用VSCode内置命令行,而新打开一个命令行。“Python: Attach”:该配置是附件到另外一个进程的调试方式。 6 结束Ok,至此配置VScode就结束了,可以选择刚才配置的解释器来逐行调试docker内的代码了。因为docker的代码是通过-v与服务器同步的,所以修改后也会直接改动服务器上存的代码,大家git的时候就只需要在服务器端设置,而不用在docker内再考虑这个问题了。 7 容器保存为镜像 #docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]] docker commit -a "dadao" -m "my test" a404c6c174a2 mymysql:v1 #示例 docker commit -a "dadao" -m "配置好的python" 18f89ebd83aa mypython:v20211123OPTIONS说明: **-a 😗*提交的镜像作者;a404c6c174a2 容器IDmymysql:v1 镜像:标签**-c 😗*使用Dockerfile指令来创建镜像;**-m 😗*提交时的说明文字;**-p 😗*在commit时,将容器暂停。 8 基于新镜像启动容器–基于新镜像运行容器 docker run -t -i -p 8022:22 --name 新容器名称 镜像名称:镜像标签 /bin/bash 或 docker run -p 8022:22 -d centos7-ssh:latest /run.sh 当容器内22端口启动后才可以用docker ps -a看到相应的端口 保证22端口启动后就可以进行远程 连接了。 9 附注 9.1 查看容器开放的端口 docker port 18f89ebd83aa #查看docker ID为18f89ebd83aa的容器开放端口[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-irvubaS6-1637643489541)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20211123122130398.png)] 22是容器端口; -d centos7-ssh:latest /run.sh** 当容器内22端口启动后才可以用docker ps -a看到相应的端口 保证22端口启动后就可以进行远程 连接了。 9 附注 9.1 查看容器开放的端口 docker port 18f89ebd83aa #查看docker ID为18f89ebd83aa的容器开放端口[外链图片转存中…(img-irvubaS6-1637643489541)] 22是容器端口; 0.0.0.0:8022是22映射到宿主机上的端口。 参考:[https://blog.csdn.net/lifengss/article/details/105300459] |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |