Docker 基本操作
- 创建自己的docker容器:
docker run --net host --name Container_name --gpus all --shm-size 1t -it -v Your_Path:Your_Dir mllm:mac /bin/bash
- docker run:用于创建并启动一个新容器
- -name:为当前新建的容器命名
- -gpus:指定该容器可以访问的GPU。“all”表示允许容器访问宿主机上的所有 GPU(NVIDIA GPU)
- -shm-size:设置容器的共享内存
- -it:-i(交互模式):保持 STDIN 打开,允许交互式输入;-t(分配伪终端):让容器像终端一样运行。
- v:指定挂载宿主机目录,将Your_Path替换为你的主路径,Your_Dir为指定文件夹(好像不重要)
- mllm:mac:指定使用的docker镜像名称和标签
- /bin/bash:容器启动后运行的命令,这里是启动 Bash shell,进入交互式终端
- 启动docker
docker start Container_name
- 进入docker
docker exec -it Container_name /bin/bash
- 删除docker
- docker ps,找到你自己对应容器的 ID
- docker stop ID,暂停容器
- docker rm ID, 删除容器
VS Code 远程连接服务器
- 下载Remote-SSH
- 点击左下角的图标,选择
连接到主机
(英文版对应为:Connect to Host...
)
- 选择
添加新的主机
按照ssh name@ip:port
的格式输入你需要连接的远程服务器
选择写入对应的配置文件
写入成功后打开对应的配置文件可以看到服务器的信息被成功添加
- 再次点击左下角的连接图标,选择
连接到主机
就可以看到已经写入配置文件的Host,选择你的服务器
- 输入密码,选择Linux即可远程连接上你的服务器!
VS Code通过SSH连接Docker
前提条件:VS Code已经安装了Remote-SSH拓展
-
进入你的docker:
docker exec -it Container_name /bin/bash
-
在容器中安装SSH服务:
apt-get update apt-get install openssh-server apt-get install openssh-client apt-get install ssh apt-get install vim
-
修改容器内的ssh文件信息,将容器的端口号暴露出来允许root用户使用ssh登录
vim /etc/ssh/sshd_config
打开文件后,向文件中添加下列内容,保存后退出:
Port 10008 PermitRootLogin yes #允许root用户使用ssh登录
- 如果是同一个ip地址的服务器,但是由于种种原因需要重新创建镜像,然后需要重新用VC进行远程连接,注意:不要使用重复的端口号,不要使用过长的端口号!!!
- 如果出现下列语句说明端口号过长或是其他问题,会导致远程连接失败:
-
重启ssh服务
/etc/init.d/ssh restart
-
设置root用户连接的密码
passwd
-
在容器中设置开机自启动ssh服务
在 Docker 容器内运行 SSH 服务时,当容器停止后 SSH 服务会随之关闭,而当容器重新启动后 SSH 服务默认情况下不会自动重启。这是因为 Docker 容器本身是一个隔离的环境,容器内的服务与主机环境是相互独立的。本操作可以用以解决restart容器后使ssh自动启动,从而不影响远程连接。vim /root/.bashrc
在.bashrc末尾添加如下代码
service ssh start
-
启动ssh服务
service ssh start
-
在VS Code中重复上述远程连接的操作即可连接docker,需要注意.ssh/config配置文件中用户名就写root,端口号写上面步骤中设置的端口号。不要使用原本连接这个服务器的用户名和端口号
配置Debug
- 点击调试按钮,选择创建launch.json文件
因为是python项目,所以选择 Python Debugger 和 Python 文件:
- 修改 launch.json文件,重点是加入当前环境的python解释器路径
可以通过which python
来找到当前的python解释器路径,然后复制过来:
- 修改并保存上述配置文件,然后回到你自己的文件,在需要调试的位置打下断点,然后点击调试按钮即可
- 在
调试控制台
进行变量的输出测试
- 按钮从左到右分别是
- 继续,可直接运行至下个断点
- 逐过程,一步一步的运行
- 进入到这行命令对应的代码中
- 跳出
- 重启
- 结束
参考:https://blog.csdn.net/qq_19716143/article/details/132310200