使用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容器数据持久化存储那些事

  • 11
    点赞
  • 42
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
回答: 要查询Docker容器配置,可以使用以下命令进入容器并查看配置文件。首先,使用docker ps命令获取容器的ID或名称。然后,使用docker exec命令进入容器的shell。例如,使用以下命令进入容器: docker exec -it container_id /bin/bash 接下来,你可以使用vim等编辑器修改容器内的配置文件。如果你的容器内没有安装vim,你可以使用以下命令安装vim: apt-get update apt-get install vim 你还可以使用docker cp命令将本地的配置文件复制到容器内,并使用docker restart命令重启容器。例如,使用以下命令替换容器内的nginx配置文件: docker cp /home/xxx/nginx.conf container_id:/etc/nginx/nginx.conf 然后,使用docker restart命令重启容器: docker restart container_id 最后,你可以再次使用docker exec命令进入容器并验证配置是否已生效: docker exec -it container_id /bin/bash 通过这些步骤,你可以查询和修改Docker容器配置。引用123 #### 引用[.reference_title] - *1* *2* [使用Docker容器配置ssh服务远程直接进入容器](https://blog.csdn.net/qq_33259057/article/details/124737659)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}} ] [.reference_item] - *3* [docker容器内修改配置文件](https://blog.csdn.net/m0_67403240/article/details/126327544)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值