vscode+docker+ssh搭建开发环境

本文详细介绍了如何使用Docker安装Linux Ubuntu镜像,设置SSH端口映射,创建并保存自定义镜像。还涵盖了在Docker容器内安装SSH服务,包括设置开机启动和配置SSH连接。最后,讲解了如何在Windows Docker环境下增加端口映射,以便于管理和使用容器服务。
摘要由CSDN通过智能技术生成

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这个命令,但我试了没用,可以使用脚本:

  1. 在/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

  1. 修改 /root/.bashrc,在最后添加以下几句脚本

#startup ssh
if [ -f /root/startup_ssh.sh ]; then
/root/startup_ssh.sh
fi

  1. 使其生效

source /root/.bashrc

完美!!!

3. vscode连接ssh

安装remote插件;
点击左下角的Open a Remote Window按钮,输入:ssh root@127.0.0.1 -A -p 9022,输入密码,ok!

4. 增加端口号映射

在使用中,经常会有增加服务的情况,要把新增端口号映射出来。
以下以windows中的docker为例。

  1. 找到docker容器的配置文件夹
# 使用cmd或powershell进入容器配置路径
> cd \\wsl$\docker-desktop-data\version-pack-data\community\docker\containers
# 打开文件夹
> explorer.exe .

在这个文件夹中下有根据容器的id命名的文件夹

  1. 关闭容器和docker

  2. 修改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"}]}
  1. 启动docker

  2. 启动容器
    就可以看到映射了:
    在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值