VS Code基于服务器中的docker的开发环境配置
- 基于Dev Containers插件
- 基于Jump Machine(跳板机)
- 服务器通过ssh连接docker容器
- VS Code配置ssh config文件连接docker容器
基于Dev Containers插件
当然可以在vscode中直接下载Dev Containers插件,在连接到服务器之后,在Dev Containers中找到相应的docker连接后直接进行开发。
此时你就会看到你服务器上所有正在运行的docker容器(必须要保证你想要开发的docker容器此时的状态是正在运行),然后点击对应的docker容器连接即可,之后的操作就和remote-ssh连接服务器操作一致了。
基于Jump Machine(跳板机)
跳板机可以理解为将服务器作为一个跳板,然后通过这个跳板连接到服务器中的docker容器。
服务器通过ssh连接docker容器
注意服务器连接docker容器可以直接通过
docker exec -it <docker_container> /bin/bash
,此处演示用ssh连接docker容器
ssh -p <port> root@127.0.0.1
# 注意此处的<port>是指docker容器22端口映射到本地的端口
# 即在创建docker容器的时候 docker run -it -p <host_port>:22 ......
# 此处的<host_port>就是指上述命令中的<port>
通过上述命令就能连接到docker容器,但是此处需要注意,在连接前docker容器中需要修改一些参数,
vim /etc/ssh/sshd_configPubkeyAuthentication yes # 启用公钥私钥配对认证方式
PermitRootLogin yes # root能使用ssh登录
port=22 # 开启22端口
然后将服务器的~/.ssh/id_rsa.pub
中的公钥添加到docker容器的~/.ssh/authorized_keys
文件中,实现免密登录。
VS Code配置ssh config文件连接docker容器
此处以macOS为例,先找到家目录下的
~/.ssh/config
文件
# 配置服务器作为跳板机
Host server # 自定义即可User <username>HostName <server_ip>Port <port> # 此处<port>是指服务器的ssh端口(默认是22)IdentityFile ~/ssh/id_rsa # 如果是私钥连接服务器,则需要本地私钥文件# 利用跳板机连接docker容器
Host server_docker # 自定义即可User rootHostName 127.0.0.1Port <map_port> # docker容器22端口映射到server服务器的端口ProxyCommand ssh -W %h:%p server # 此处的server是跳板机的名字 必须和跳板机的Host后面的名称一致
此时你会在VS Code中remote-ssh插件下看到配置的server以及server_docker,点击你想要连接的docker容器即可。
从上面的操作步骤来看,其实两种ssh连接方法是相同的原理,即先连接服务器然后连接docker容器。现在就能用VS Code愉快地进行docker容器开发啦!!!