时效性
本篇撰写时间为2021.12.9,由于计算机技术日新月异,博客中所有内容都有时效和版本限制,具体做法不一定总行得通,链接可能改动失效,各种软件的用法可能有修改。但是其中透露的思想往往是值得学习的。
本篇前置:
- ExpRe[0] VSCode[0] 安装和基础使用,联动Markdown,联动知乎
https://www.cnblogs.com/minor-second/p/15528264.html - ExpRe[12] Docker[1] 镜像修改、保存、复用。附:ssh连接物理机
https://www.cnblogs.com/minor-second/p/15580819.html
本篇是手动构建docker镜像所需技术总结之2
对容器ssh
配置设置
- 设置密码
passwd
然后输入两次密码 - 补包
apt install openssh-server
vim /etc/ssh/sshd_config
把下面这三行相关的选项改了(#
去掉,且改键值)
Port 22
PermitRootLogin yes
PubkeyAuthentication yes
- 重启服务
service ssh restart
- 开机启动
在/root/.bashrc
下增加
service ssh start
保存镜像并复用
- 退出容器
- 在宿主机
commit
镜像
sudo docker commit -m '提交的说明信息' <原容器名> <新镜像名>
这会返回镜像ID
之后sudo docker images
可以查看镜像列表,进行确认 - 重新启动镜像,并加上端口映射选项
-p <端口号>:22
,这样ssh
使用这个端口号相当于使用容器的22
端口。
比如
sudo docker run -it --gpus all --name <名称> -v <目录>:<目录> -p <端口号>:22 --shm-size=8gb <刚刚保存的镜像名>
- 其中
-it
是常用的设置。具体是“interactive”和“pseudo TTY”,参见
https://docs.docker.com/engine/reference/commandline/run/ --gpus
表示使用的GPU--name
表示容器名-v
表示目录映射(左边写宿主,右边写容器)-p
表示端口映射(左边写宿主,右边写容器)(验证:宿主机sudo docker ps -a
可以看到端口映射信息)- 手动设大
--shm-size
(共享内存),防止pytorch
等框架多进程跑时爆掉。(验证:进了容器之后df -k /dev/shm
看输出,确实有\(8*2^{20}=8388608\)个1K-blocks
)
- 其中
指定端口连接ssh
ssh -p <之前映射的端口号> root@<ip>
然后使用之前设置了的密码登录即可。
VSCode远程编辑和调试
配置
安装VSCode插件Remote - SSH
时效性:版本如下
左侧这个图标
上面选SSH Targets,齿轮(Configure),选择Config File
这里如果原来不存在会自动创建文件,如上图
我们改写成需要的
Host
:自己起名
HostName
:ip
User
:用户名
IdentityFile
:当使用私钥登录时需要指定
PasswordAuthentication yes
:当使用密码登录时需要写这个
按Ctrl + s
保存后,左侧自动更新
连接
界面左侧,上图所示位置,下方那排那个按钮
允许通过防火墙,然后按照提示操作,输入密码等,即可
- 左侧点击Open Folder,
选择文件夹打开
我们看到了文件夹中内容 - 可以和一般的本地文件一样用VSCode编辑,非常方便
Ctrl + `
可以打开终端并用终端输入命令执行。- 搜索并安装插件后,也可以调试
注:下方选解释器