目录

  • 对容器ssh
  • 配置设置
  • 保存镜像并复用
  • 指定端口连接ssh
  • VSCode远程编辑和调试
  • 配置
  • 连接


时效性

本篇撰写时间为2021.12.9,由于计算机技术日新月异,博客中所有内容都有时效和版本限制,具体做法不一定总行得通,链接可能改动失效,各种软件的用法可能有修改。但是其中透露的思想往往是值得学习的。

本篇是手动构建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

时效性:版本如下

docker远程工具_端口映射


左侧这个图标

docker远程工具_docker远程工具_02


上面选SSH Targets,齿轮(Configure),选择Config File

docker远程工具_端口映射_03


这里如果原来不存在会自动创建文件,如上图

我们改写成需要的

docker远程工具_docker远程工具_04


Host:自己起名

HostName:ip

User:用户名

IdentityFile:当使用私钥登录时需要指定

PasswordAuthentication yes:当使用密码登录时需要写这个

Ctrl + s保存后,左侧自动更新

docker远程工具_端口号_05

连接

docker远程工具_端口映射_06


界面左侧,上图所示位置,下方那排那个按钮

docker远程工具_端口号_07


允许通过防火墙,然后按照提示操作,输入密码等,即可

  • 左侧点击Open Folder,
    选择文件夹打开

    我们看到了文件夹中内容
  • 可以和一般的本地文件一样用VSCode编辑,非常方便
  • Ctrl + `可以打开终端并用终端输入命令执行。
  • 搜索并安装插件后,也可以调试

    注:下方选解释器