1. docker安装linux镜像
拉取镜像:
docker pull ubuntu:16.04
运行容器,并设置ssh端口(容器22端口映射到主机9022)、文件夹映射(容器/host文件夹映射主机d:\docker_fold):
docker run -itd --name ubuntu_vscode_dev -p 9022:22 -v /d/docker_fold:/host ubuntu:16.04 /bin/bash
在安装完开发环境后,可以考虑将容器打包成镜像文件,以后需要时可以很方便的使用:
docker export ubuntu_vscode_dev > d:/docker/images/ubuntu_vscode_dev.tar
2. docker容器安装ssh
和ubuntu中安装ssh一样的,不过需要先apt update,否则apt将获取不到openssh-server。
切换到root用户:
su
为root添加密码:
passwd
更新apt,可以先设置一下国内的镜像源:
apt update
apt upgrade
安装openssh-server:
apt install openssh-server
启动ssh:
service ssh start
查看ssh状态:
service ssh status
重启ssh:
service ssh restart
注意,需要配置一下ssh,不然可能连接不上:
修改 /etc/ssh/sshd_config 这个配置文件:
PermitRootLogin yes
PasswordAuthentication yes
UsePAM no
然后重启ssh即可。
2.1 ssh 开机自动启动
ssh设置开机自动启动,网上很多都说用systemctl enable ssh这个命令,但我试了没用,可以使用脚本:
- 在/root目录下创建startup_ssh.sh脚本
#!/bin/bash
LOGTIME=$(date “+%Y-%m-%d %H:%M:%S”)
echo “[$LOGTIME] startup ssh run…” >>/root/startup_ssh.log
service ssh start >>/root/startup_ssh.log
- 修改 /root/.bashrc,在最后添加以下几句脚本
#startup ssh
if [ -f /root/startup_ssh.sh ]; then
/root/startup_ssh.sh
fi
- 使其生效
source /root/.bashrc
完美!!!
3. vscode连接ssh
安装remote插件;
点击左下角的Open a Remote Window按钮,输入:ssh root@127.0.0.1 -A -p 9022,输入密码,ok!
4. 增加端口号映射
在使用中,经常会有增加服务的情况,要把新增端口号映射出来。
以下以windows中的docker为例。
- 找到docker容器的配置文件夹
# 使用cmd或powershell进入容器配置路径
> cd \\wsl$\docker-desktop-data\version-pack-data\community\docker\containers
# 打开文件夹
> explorer.exe .
在这个文件夹中下有根据容器的id命名的文件夹
-
关闭容器和docker
-
修改config.v2.json和hostconfig.json文件
找到需要修改的容器的配置文件夹,打开config.v2.json和hostconfig.json,共有3个地方要修改:
示例有22->9022和8888->9088两个端口映射。
config.v2.json有两个地方要修改:Ports和ExposedPorts
"Ports":{"22/tcp":[{"HostIp":"0.0.0.0","HostPort":"9022"},{"HostIp":"::","HostPort":"9022"}],"8888/tcp":[{"HostIp":"0.0.0.0","HostPort":"9088"},{"HostIp":"::","HostPort":"9088"}]}
"ExposedPorts":{"22/tcp":{},"8888/tcp":{}}
hostconfig.json有一个地方要修改:PortBindings
"PortBindings":{"22/tcp":[{"HostIp":"","HostPort":"9022"}],"8888/tcp":[{"HostIp":"","HostPort":"9088"}]}
-
启动docker
-
启动容器
就可以看到映射了: