最终版
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)限制与分配指南文章来源:https://www.toymoban.com/news/detail-477063.html
Docker容器数据持久化存储那些事文章来源地址https://www.toymoban.com/news/detail-477063.html
到了这里,关于使用Docker容器配置ssh服务,远程直接进入容器的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!