ssh进入docker容器

容器已经改变了我们对虚拟化的思考方式。 您可能还记得从虚拟化BIOS,操作系统和内核到每个虚拟化网络接口控制器(NIC)的虚拟机已满栈的日子(或者您可能还活着)。 您就像自己的工作站一样,登录到虚拟机。 这是一个非常直接和简单的类比。

然后容器问世, 从LXC开始,最后达到开放容器计划( OCI ),那时事情变得复杂了。

幂等

在容器世界中,“虚拟机”仅是虚拟的。 不需要虚拟化的所有内容都是从主机借用的。 此外,容器本身通常是短暂的和幂等的,因此它不存储持久性数据,并且其状态由主机上的配置文件定义。

如果您习惯于使用虚拟机的旧方法,那么您自然希望登录到虚拟机以便与虚拟机进行交互。 但是容器是临时性的,因此,如果需要重新启动或重新生成容器,则在设计中忘记了在容器中进行的所有操作。

控制你的容器的基础设施(如OC,crictl,LXC,搬运工 )的命令提供运行重新启动服务,查看日志重要的命令接口,确认重要文件的存在和许可模式,等等。 您应该使用容器基础结构提供的工具与应用程序进行交互,或者编辑配置文件并重新启动。 这就是容器的设计目的。

话语被正式发布为容器图像。 Discourse软件是无状态的 ,因此其安装独立于/ var / discourse 。 只要您具有/ var / discourse的备份,就可以始终通过重新启动容器来恢复论坛。 该容器不保存任何持久数据,其配置文件为/var/discourse/containers/app.yml

如果您登录到容器并编辑其中包含的任何文件,如果必须重新启动容器,所有更改都将丢失。

从头开始构建的LXC容器更加灵活,启动时会将配置文件(在您定义的位置)传递到该容器。

像Jenkins这样的构建系统通常都有一个默认配置文件,例如jenkins.yaml ,它提供了一个基本容器映像的说明,该映像仅用于在源代码上构建和运行测试。 构建完成后,容器消失。

既然您知道不需要SSH与您的容器进行交互,下面是可用工具的概述(以及一些使用SSH的注意事项,尽管有许多花哨的工具使其变得多余)。

OpenShift Web控制台

OpenShift 4提供了一个用于容器创建和维护的开源工具链,包括一个交互式Web控制台。

登录Web控制台时,导航至项目概述,然后单击“ 应用程序”选项卡以获取Pod列表。 选择一个(运行中的)窗格以打开应用程序的“ 详细信息”面板。

单击“ 详细信息”面板顶部的“ 终端”选项卡,以在容器中打开一个交互式外壳。

如果您更喜欢基于浏览器的Kubernetes管理体验,则可以通过learning.openshift.com上提供的交互式课程来了解更多信息。

OpenShift oc

如果您希望使用命令行界面,可以使用oc命令与终端上的容器进行交互。

首先,获取正在运行的Pod的列表(或参阅Web控制台以获取活动Pod的列表)。 要获取该列表,请输入:

 $  oc get pods 

您可以查看资源(窗格,内部版本或容器)的日志。 默认情况下, oc日志从您指定的容器中的第一个容器返回日志。 要选择一个容器,请添加--container选项:

 $  oc logs --follow = true example- 1 -e1337 --container app 

您还可以使用以下方法查看来自容器中所有容器的日志:

 $  oc logs --follow = true example- 1 -e1337 --all-containers 

执行命令

您可以使用以下命令远程执行命令:

$ oc exec example- 1 -e1337 --container app hostname
example.local

这类似于非交互式运行SSH:您可以运行要运行的命令,而无需交互式shell接管您的环境。

遥控壳

您可以附加到正在运行的容器。 这仍然没有打开容器外壳,但它直接运行命令。 例如:

 $  oc attach example- 1 -e1337 --container app 

如果在容器中需要真正的交互式外壳,则可以使用oc rsh命令打开远程外壳,只要该容器包含外壳即可。 默认情况下, oc rsh启动/ bin / sh

 $  oc rsh example- 1 -e1337 --container app 

Kubernetes

如果直接使用Kubernetes,则可以使用kubetcl exec命令在pod中运行Bash shell。

首先,确认您的Pod正在运行:

 $  kubectl get pods 

只要列出了包含您的应用程序的Pod,就可以使用exec命令在容器中启动shell。 使用名称example-pod作为吊舱名称,输入:

$ kubectl exec --stdin = false --tty = false
example-pod -- / bin / bash
root @ example.local: / # ls
bin   core etc   lib    root  srv
boot  dev  home  lib64  sbin  tmp  var

码头工人

搬运工命令类似于kubectl。dockerd守护程序运行的情况下,获取正在运行的容器的名称(如果您不在适当的组中,则可能必须使用sudo来提升特权):

$ docker ps
CONTAINER ID    IMAGE       COMMAND      NAME
678ac5cca78e    centos     "/bin/bash"   example-centos

使用容器名称,可以在容器中运行命令:

$ docker exec example / centos cat / etc / os-release
CentOS Linux release 7.6
NAME = "CentOS Linux"
VERSION = "7"
ID = "centos"
ID_LIKE = "rhel fedora"
VERSION_ID = "7"
[ ... ]

或者,您可以启动Bash Shell进行交互式会话:

 $  docker exec -it example-centos / bin / bash 

容器和电器

与云打交道时要记住的重要一点是,容器本质上是运行时,而不是虚拟机。 尽管它们与Linux系统有很多共性(因为它们 Linux系统!),但是它们很少直接转换为您可能在Linux工作站上开发的命令和工作流程。 但是,就像设备一样,容器具有帮助您开发,维护和监视它们的界面,因此请熟悉前端命令和服务,直到您像与它们一样愉快地进行交互为止 您与虚拟(或裸机)计算机进行交互。 很快,您会想知道为什么所有的东西都不是短暂的。

翻译自: https://opensource.com/article/19/6/how-ssh-running-container

ssh进入docker容器

ssh进入docker容器_如何通过SSH进入正在运行的容器相关推荐

  1. linux运行容器,容器与云|如何在 Windows 上运行 Linux 容器

    1.概述 现在能够在 Windows 10 和 Windows 服务器上运行 Docker 容器了,它是以 Ubuntu 作为宿主基础的. 想象一下,使用你喜欢的 Linux 发行版--比如 Ubun ...

  2. k8s pod内部容器_第三章 pod:运行于kubernetes中的容器

    本章内容涵盖 创建. 启动和停止 pod 使用标签组织 pod 和其他资源 使用特定标签对所有 pod 执行操作 使用命名空间将多个 pod 分到不重叠的组中 调度 pod 到指定类型的工作节点 上一 ...

  3. ssh框架实现数据库_自顶向下介绍SSH及其如何实现安全的数据共享

    ssh框架实现数据库 by Sam Ollason 通过萨姆·奥拉森(Sam Ollason) This article will take a high-level and top-down app ...

  4. java ssh框架面试题_五道关于SSH框架的面试题

    1.写出你熟悉的开源框架以及各自的作用(项目中为什么使用SSH) 答:框架:hibernate,spring,struts1/struts2. Hibernate主要用于数据持久化:封装了JDBC操作 ...

  5. arm架构linux运行docker失败,armdocker:在x86上模拟运行arm容器

    一.背景 docker 可以在 arm 平台上运行,验证 docker 镜像最直接的方式是在 arm 平台上,但有时候需要在 PC 平台上验证 arm 平台的镜像.本文对此进行介绍. 二.x86依赖环 ...

  6. 【Docker】谷粒商城笔记记录:P104运行ElasticSearch容器

    在Docker中运行ES 感觉老师这一p讲解非常详细,因此做了笔记以供参考 下载镜像文件 注意ES和Kibana两个版本要统一 docker pull elasticsearch:7.4.2 #存储和 ...

  7. docker mysql开机自启动_Docker学习4-学会如何让容器开机自启服务【坑】

    前言 小龙亲测重启服务器后 docker 容器没跑起来,相信有不少小伙伴在用docker部署容器的时候也发现每次开机服务就没有自启了,需要手动去执行把容器服务开启起来,但有没有可以让它开机自启呢?显然 ...

  8. docker 安全性_使用最新的安全性增强来调整Docker

    docker 安全性 自从我写了有关Docker安全性的系列文章的前两篇 文章以来已经有一段时间了. 本文将提供自那时以来已添加到Docker的最新信息,并涵盖与上游Docker合并过程中正在经历的新 ...

  9. docker配置阿里云镜像加速并更改镜像和容器的存储位置及常见的docker bug解决方法

    配置阿里云镜像加速 使用docker容器管理服务,总结下来就三个重要概念: 镜像,容器,数据卷.在之前的博文中我们已经讲述了如何在linux服务器上安装docker,并运行docker服务了. 这篇文 ...

最新文章

  1. Android SearchView和ListView的结合使用
  2. Bootstrap的lia
  3. txt文档批量转为excel_Excel高级技巧-批量导入txt文件里的数据
  4. 读《程序员的SQL金典》[2]--函数
  5. 【从入门到放弃-ZooKeeper】ZooKeeper实战-分布式队列
  6. 5.18下午 口语课 阅读
  7. Docker详解(三)——Docker安装与部署
  8. java 异常捕捉 ( try catch finally ) 清晰解释
  9. VPP 命令总结(持续更新)
  10. 全网、全国最好用的基于经纬度的天气查询、天气预报接口
  11. jQuery和asp.net mvc相关资源链接
  12. C语言实现自制图片文件合成器
  13. Yunxion资产监测设备中DCDC芯片选择
  14. Eclipse菜单栏翻译
  15. 求梯形面积python
  16. C++二进制数转十进制
  17. 歌评-《Rex Incognito 尘世闲游》-陈致逸
  18. Whiten process——数据的白化处理
  19. win10开启热点后电脑无法打开网页
  20. 优盘启动盘恢复为普通优盘

热门文章

  1. RocketMQ 4.5.1 环境搭建
  2. 使用python中的networkx来生成一个图
  3. redis常用集群方案汇总
  4. rabbitMq消息不可达returnListener的使用
  5. jquery字符串序列化方法总结
  6. 【BZOJ】3922: Karin的弹幕
  7. Eclipse4.5 mars 配置Velocity插件
  8. OrCAD Capture使用记录
  9. Use JPA API
  10. WINDOWS下VIM配置