使用VScode和Remote ssh对docker容器进行远程代码调试

·
Web开发 no tag November 18, 2020

使用VScode和Remote ssh对docker容器进行远程代码调试

配置ssh使主机能连接服务器的docker容器

启动一个lamp docker容器

[root@iz2ze4p9y07ns63s5i7js5z ~]# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                          PORTS                                                    NAMES
20d49078c6c9        web:latest          "/run.sh"                14 hours ago        Up 11 hours                     3306/tcp, 0.0.0.0:20001->22/tcp, 0.0.0.0:10001->80/tcp   crazy_mayer

映射22端口和80端口,访问80端口发现服务已启动

[root@iz2ze4p9y07ns63s5i7js5z ~]# curl 123.57.145.88:10001
<html>
<head>
        <title>Hello world!</title>

因为docker默认不开启远程连接,所以需要进行设置

修改服务器的/lib/systemd/system/docker.service

vim /lib/systemd/system/docker.service
ExecStart=/usr/bin/dockerd -H unix:///var/run/docker.sock -H tcp://0.0.0.0:2375

重启docker使得配置生效

systemctl daemon-reload
systemctl restart docker

因为docker容器内一般没有ssh,所以需要安装并配置

exec命令进入容器

1.设置root密码

passwd root
root

2.安装ssh

apt update && apt install -y --no-install-recommends openssh-server

3.一般ssh默认禁止root账号登录,修改ssh配置文件使其允许,将PermitRootLogin的值从withoutPassword改为yes

vim /etc/ssh/sshd_config
PermitRootLogin yes

4.重启ssh使其生效

service ssh restart

5.ssh远程连接

86175@DESKTOP-RJDA8LJ MINGW64 ~/Desktop/Markdown
$ ssh root@123.57.145.88 -p 20001
root@123.57.145.88's password:
Welcome to Ubuntu 14.04.3 LTS (GNU/Linux 3.10.0-1127.19.1.el7.x86_64 x86_64)

 * Documentation:  https://help.ubuntu.com/
Last login: Fri Nov 13 02:14:26 2020 from 60.12.8.170
root@20d49078c6c9:~#

配置公钥进行免密码登录

客户端生成公钥

86175@DESKTOP-RJDA8LJ MINGW64 ~/.ssh
$ ssh-keygen -t rsa -P ''
Generating public/private rsa key pair.
Enter file in which to save the key (/c/Users/86175/.ssh/id_rsa):
Your identification has been saved in /c/Users/86175/.ssh/id_rsa.
Your public key has been saved in /c/Users/86175/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:xJwKrf/D4l4EbpIpQ5PHMRq6enOLtZnlVnHNVKGyczI 86175@DESKTOP-RJDA8LJ
The key's randomart image is:
+---[RSA 2048]----+
|  . o        .o. |
| . = + o .  ..   |
|. = + o = .+.    |
| o o * +. .oo    |
|. o = + SoE .    |
|.  o + ..  =     |
|. o o oo.        |
| . = Booo        |
|  . =++...       |
+----[SHA256]-----+

复制公钥到服务器

公钥文件和私钥文件在 C:\Users\86175\.ssh文件夹下

复制id_rsa.pub里的内容到docker容器的/root/.ssh/authorized_keys没有文件夹的话要线创建

root@20d49078c6c9:~# mkdir .ssh
root@20d49078c6c9:~# ll
total 40
drwx------ 1 root root 4096 Nov 13 02:55 ./
drwxr-xr-x 1 root root 4096 Nov 12 12:46 ../
-rw------- 1 root root  135 Nov 13 02:21 .bash_history
-rw-r--r-- 1 root root 3106 Feb 20  2014 .bashrc
drwx------ 2 root root 4096 Nov 13 02:14 .cache/
-rw-r--r-- 1 root root  140 Feb 20  2014 .profile
drwxr-xr-x 2 root root 4096 Nov 13 02:55 .ssh/
-rw------- 1 root root 3643 Nov 13 02:52 .viminfo
drwxr-xr-x 5 root root 4096 Nov 13 02:19 .vscode-server/
root@20d49078c6c9:~# cd .ssh
root@20d49078c6c9:~/.ssh# ls
root@20d49078c6c9:~/.ssh# vim authorized_keys

此时发现可以免密登录ssh

86175@DESKTOP-RJDA8LJ MINGW64 ~/Desktop/Markdown
$ ssh root@123.57.145.88 -p 20001
Welcome to Ubuntu 14.04.3 LTS (GNU/Linux 3.10.0-1127.19.1.el7.x86_64 x86_64)

 * Documentation:  https://help.ubuntu.com/
Last login: Fri Nov 13 02:57:17 2020 from 60.12.8.170
root@20d49078c6c9:~# 

配置Remote ssh 用vscode连接docker容器

vscode商店下载Remote ssh,完成之后点击左下角

image.png

点击其中一个

image.png

输入刚才的命令

image.png

再次连接即可。打开文件夹/var/www/html即可开始调试

如果报错docker容器安装curl

root@20d49078c6c9:/# apt-get install curl

image.png

image.png

tips:可以在docker容器里安装vim,openssh,xdebug后commit保存。直接用

  • Not left !!
  • PHP弱类型安全
取消回复

说点什么?
Title
因为docker默认不开启远程连接,所以需要进行设置
因为docker容器内一般没有ssh,所以需要安装并配置
客户端生成公钥
复制公钥到服务器

© 2023 Yang_99的小窝. Using Typecho & Moricolor.