使用Docker容器配置ssh服务,远程直接进入容器

这篇具有很好参考价值的文章主要介绍了使用Docker容器配置ssh服务,远程直接进入容器。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

最终版

hub仓库

https://hub.docker.com/

目录

hub仓库

docker命令

镜像

查看所有镜像

运行镜像

容器

查看所有容器

可以在当前终端挂载

停止容器

删除容器s

使用容器

Docker使用镜像配置ssh服务后用ssh登陆

1. 先上dockerhub上pull一个需要的镜像下来,然后run这个镜像生成一个容器。

2. 进入到容器,安装ssh服务。

3. 将这个设置好的容器保存成新镜像

4.给容器配置显卡+穿刺服务

后记


docker命令

docker 的三个主要组件 镜像 容器 仓库

镜像

查看所有镜像

docker images

会列出当前系统内保存的所有镜像。要获取新镜像资源要通过从docker hub拉取下载得到

进入docker hub网站后可以找到各种镜像资源,点tag选择合适版本,直接复制命令到窗口拉取镜像。在此界面可以查看dockerfile,里面有该镜像资源所对应的各系统、支持库的版本属性。

运行镜像

docker run -d -p 80(宿主机端口号):80(虚拟机/容器端口号) -it 镜像名 /bin/bash 
  • -d 后台运行 (默认创建完容器之后容器的status是退出的)

  • -p 指定端口

  • -it (-i 交互模式 -t 支持终端登录)

  • --name 指定容器名

详细看: docker命令详解(一):run

run了一个新镜像时,系统会自动给容器分配一个容器名,建议使用--name选项给容器命名。容器名可以代替冗长的容器id,容器id很长很无厘头,最好给起一个容器名

如果没有写-d 该容器会直接挂载到当前终端

为了方便管理,请一定要分配端口号

容器

查看所有容器

docker ps -a

会出来一个表,题头分别是

容器id,镜像名,怎么运行起来的,创建时间,状态,端口,容器名

可以在当前终端挂载

docker attach container_id 

该命令在当前窗口挂载容器,直接进入终端

如果想退出容器,在容器的终端输入exit即可,此时容器没有停止

停止容器

docker stop container_id

删除容器s

删除前先用docker ps -a 看STATUS属性 先把容器停止运行,再

docker rm  container_id

使用容器

可以使用attach命令进入一个容器里面,但使用该命令有一个问题。当多个窗口同时使用该命令进入该容器时,所有的窗口都会同步显示。如果有一个窗口阻塞了,那么其他窗口也无法再进行操作。

attach可以在个人开发时使用,但多人开发推荐使用下面的命令进入容器

docker ps  
docker exec -it container_id /bin/bash

Docker使用镜像配置ssh服务后用ssh登陆

1. 先上dockerhub上pull一个需要的镜像下来,然后run这个镜像生成一个容器。

注意格式!!

docker run -dit --name [container_name] --privileged=true \
    [images]:[tag] /sbin/init
  • --privileged=true 一定要写 不然不能用systemctl重启、启用ssh服务

  • 必须从/sbin/init进入 不然systemctl不能用

如果提示找不到/sbin/init文件夹的话,先直接用/bin/bash进入容器

容器开启之后会自动生成/sbin/init。再把这个容器打包成镜像,重新生成成容器即可

2. 进入到容器,安装ssh服务。

先设个密码

 passwd

镜像默认安装系统体量最小的版本,所以首先要给apt-get(debian) or yum(centos) 升级 运行

apt-get update

然后安装ssh

apt-get install vim openssh-server

修改ssh配置文件:

vim /etc/ssh/sshd_config

添加或修改文件内容如下

PubkeyAuthentication yes #启用公钥私钥配对认证方式 
AuthorizedKeysFile .ssh/authorized_keys #公钥文件路径(和上面生成的文件同) 
PermitRootLogin yes #root能使用ssh登录
ClientAliveInterval 60  #参数数值是秒 , 是指超时时间
ClientAliveCountMax 3 #设置允许超时的次数
UsePAM yes 更改为 UsePAM no
Port 80 #指定好端口号,默认是22 后面这个数字要在你run容器的时候用到

将文件保存就可以了。然后重启ssh服务并设置开机启动

systemctl restart sshd.service
systemctl enable sshd.service

基本搞定 退出这个容器

3. 将这个设置好的容器保存成新镜像

docker commit -m 'messages' -a '' [container_id] [image_name]

保存完后可以用docker images看到你新保存的镜像,我们需要根据这个镜像来生成容器。

生成容器的时候,依然注意run命令的写法!!!

用这个新镜像开启一个可以提供ssh服务的容器:

docker run --name [container_name] -dit -p 11111:80 [ssh image] /etc/init.d/ssh start -D
  • /etc/init.d/ssh start -D 使用sshd开启服务 有教程说可以用/usr/sbin/sshd -D 我没成功

  • 11111 是你用ssh连接时用到的数字 80是你容器内部开的端口

测试一下用ssh连接是否成功,我到这一步就可以用ssh连接了。

ssh root@[ip] -p 11111

4.给容器配置显卡+穿刺服务

容器内上传的文件是会对应到服务器内部存储空间的,如果不配置穿刺服务使两个文件夹共享,我们很难在服务器端对容器内文件进行管理。穿刺有点像VMware的共享虚拟文件夹,可以方便的让宿主机和容器互通文件,并且我们还可以配置多个穿刺服务,使容器内文件保存在不同磁盘上。

使用命令:

sudo docker run -itd \
      -v /home/user/v5.3/packages/dev-box-master:/mnt/dvbox \
      -p 8080:80
      --name=dev-box-scm \
      --gpus '"device=0,1"'\
      镜像名称 /etc/init.d/ssh start -D

使用多个-v 就可以配置多个穿刺服务

此时容器内上传的文件可以保存到对应服务器的相应位置

后记

整理不易

求点赞求收藏

参考博客:

docker中安装ssh服务

使用ssh直连docker容器的方法 :解决Connection refused报错

用ssh连接docker容器

Docker权限 “Got permission denied while trying to connect to the Docker daemon socket at unix:///var/”

Docker stop停止/remove删除所有容器

Docker容器中Unable to locate package错误解决办法

Docker资源(CPU/内存/磁盘IO/GPU)限制与分配指南

Docker容器数据持久化存储那些事文章来源地址https://www.toymoban.com/news/detail-477063.html

到了这里,关于使用Docker容器配置ssh服务,远程直接进入容器的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • SSH远程直连Docker容器

    转载自cpolar极点云文章:SSH远程直连Docker容器 在某些特殊需求下,我们想ssh直接远程连接docker 容器,下面我们介绍结合cpolar工具实现ssh远程直接连接docker容器 本文下载一个tomcat镜像为例子,输入命令拉取tomcat镜像: 我们下载的是tomcat镜像,tomcat端口容器内部默认是8080,我们把tomc

    2024年02月11日
    浏览(33)
  • SSH远程直连--------------Docker容器

    在某些特殊需求下,我们想ssh直接远程连接docker 容器,下面我们介绍结合cpolar工具实现ssh远程直接连接docker容器 本文下载一个tomcat镜像为例子,输入命令拉取tomcat镜像: 我们下载的是tomcat镜像,tomcat端口容器内部默认是8080,我们把tomcat容器内部端口映射到宿主机的8088端口上,运行镜

    2024年02月11日
    浏览(35)
  • SSH公网远程直连Docker容器

    在某些特殊需求下,我们想ssh直接远程连接docker 容器,下面我们介绍结合cpolar工具实现ssh远程直接连接docker容器 本文下载一个tomcat镜像为例子,输入命令拉取tomcat镜像: 我们下载的是tomcat镜像,tomcat端口容器内部默认是8080,我们把tomcat容器内部端口映射到宿主机的8088端口上,运行镜

    2024年02月12日
    浏览(37)
  • 本地Pycharm连接远程服务器详细配置过程(直接在本地使用服务器显卡,很棒)

    相信很多人都遇见过这种情况:实验室成员使用同一台服务器,每个人拥有自己的独立账号,我们可以使用服务器更好的配置完成实验,毕竟自己哪有money拥有自己的3090呢。通常服务器系统采用Linux,而我们平常使用频繁的是Windows系统,二者在操作方面存在很大的区别,比如

    2024年02月03日
    浏览(74)
  • Docker使用root用户进入容器

    -u 0 使用该 -u 选项时,您可以使用 root 用户( ID = 0 )而不是提供的默认用户登录Docker容器. root(id = 0)是容器中的默认用户。图像开发人员可以创建其他用户。这些用户可以通过名称访问。传递数字ID时,用户不必在容器中。

    2024年02月12日
    浏览(33)
  • 使用Vscode连接进入docker容器

    使用Vscode连接进入docker容器 在使用Vscode连接远程服务器进行操作时,使用Vscode丰富的插件进行,使用Remote-SSH连接服务器,但是该插件进行连接是不能进入到docker容器内部进行操作。想要直接进入到容器内部进行工作需要另外的方法。 方法一:使用ssh工具进行连接,容器在运

    2024年02月16日
    浏览(40)
  • SSH通过VSCode远程访问服务器Opencv和matplotlib等无法直接显示图像问题

    需求描述: 在VSCode中通过SSH连接服务器,使用cv2.imshow或plt.show()无法显示图像。 解决思路如下: 1、首先查看与服务器之间的网络连接问题(百分之九十问题就是出在第一步骤,哈哈哈) 在本地端打开cmd,使用指令ping xxx.xxx.xxx.xxx,其中(xxx.xxx.xxx.xxx为服务器的IP地址) 在

    2024年02月15日
    浏览(40)
  • 【VS Code】使用 VS Code 登陆远程服务器上的 Docker 容器

    以下命令默认已经构建了一个 Docker Image。  上述的步骤主要是在服务器上启动了一个docker容器,并在容器内安装和配置了ssh服务。以下是对于这些步骤的详细解释: 首先,使用  docker run  命令在服务器上启动了一个名为  container-name  的容器。这里使用了  -v /mnt/mount/:/hom

    2024年02月06日
    浏览(47)
  • docker容器添加ssh服务

    本篇文章主要介绍如何为一个容器添加ssh服务,使得可以从另一台服务器直接ssh到一个容器内部,达到直接访问容器内部环境的目的,避免需从宿主机docker exec或attach进入容器 实验环境:两台服务器地址 192.168.91.131    192.168.91.133(容器所在宿主机) 实验结果:从192.168.91.1

    2024年02月11日
    浏览(45)
  • 【Docker 】Docker 客户端,容器使用,启动容器,启动已停止运行的容器,停止一个容器,进入容器

    作者简介: 辭七七,目前大一,正在学习C/C++,Java,Python等 作者主页: 七七的个人主页 文章收录专栏: 七七的闲谈 欢迎大家点赞 👍 收藏 ⭐ 加关注哦!💖💖 docker 客户端非常简单 ,我们可以直接输入 docker 命令来查看到 Docker 客户端的所有命令选项。 可以通过命令 dock

    2024年02月11日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包