使用VScode和Remote ssh对docker容器进行远程代码调试
使用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,完成之后点击左下角
点击其中一个
输入刚才的命令
再次连接即可。打开文件夹/var/www/html
即可开始调试
如果报错docker容器安装curl
root@20d49078c6c9:/# apt-get install curl