Docker学习之SSH连接docker容器

Docker

前言

不论是开发者是运维人员,都经常有需要进入容器的诉求,目前看,主要的方法不外乎以下几种:

  • 使用ssh登陆进容器,需要在容器中安装启动sshd,存在开销和攻击面增大的问题,同时也违反了Docker所倡导 的一个容器一个进程的原则。容器本身是一个无状态,用后即焚的东西。为了尽量的轻量快捷建议一个容器尽量只有一个进程,否则你的容器会越来越大,越来越像一个虚拟机一样笨重不宜维护。
  • 使用nsenter、nsinit等第三方工具,需要额外学习(暂不考虑)。
  • 使用docker本身提供的工具,大多数情况最好还是使用Docker原生方法,Docker目前主要提供了Docker exec和 Docker attach两个命令。

SSH连接

Docker基础知识回顾:阿里云CentOS 7上安装配置Docker

查看镜像:

[root@iZ2ze74fkxrls31tr2ia2fZ ~]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
centos-java         latest              feb3ca30b34b        6 weeks ago         755.2 MB
docker.io/centos    centos              3fa822599e10        12 weeks ago        203.5 MB

创建并运行容器:

docker run -tid --name app_learn -p 5001:22 -p 5000:8080 -v /home/app_learn/:/mnt/app/ 3fa822599e10 /usr/sbin/init

进入容器:

docker exec -it app_learn /bin/bash

安装依赖:

yum install passwd openssl openssh-server openssh-clients -y

安装service命令:

yum install initscripts -y

修改密码:

[root@8c213535c149 mnt]# passwd
Changing password for user root.
New password: 
Retype new password: 
passwd: all authentication tokens updated successfully.

修改配置:

vi /etc/ssh/sshd_config

PubkeyAuthentication yes #启用公钥私钥配对认证方式
AuthorizedKeysFile .ssh/authorized_keys #公钥文件路径
PermitRootLogin yes #root能使用ssh登录

重启ssh服务,并设置开机启动:

service sshd restart
chkconfig sshd on

远程连接:

通过物理机IP以及5001端口就可以远程连接Docker容器了。

4.png

原生连接

docker ps

docker attach app_learn

ls

exit

执行以上命令可以看到attach可以进入到一个已经运行的容器,进行命令操作,但是从容器中退出之后容器也停止了,所以在生产环境中很少使用。

docker exec

docker exec -it app_learn /bin/bash

使用docker exec -it进入容器和我们平常操作console界面类似。而且不像attach方式退出,导致整个容器退出,生产环境中用的比较多。比使用ssh 、nsenter、nsinit方式更方便,生产中常用的方式。

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

编辑于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏LuckQI

容器Docker学习系列三~每天几个小命令

今天继续学习我们的Docker命令,在简单的了解命令后我们会开始实战操作执行Docker容器,应用起来我们的命令。今天继续学习六大部门Docker命令中的本地镜...

21920
来自专栏北京马哥教育

15 分钟掌握 15 个 Docker 小窍门

1. 获取最近运行容器的id 这是我们经常会用到的一个操作,按照官方示例,你可以这样做(环境ubuntu): $ ID=$(docker run ubuntu...

33250
来自专栏漫漫全栈路

Docker 循序渐进

上一篇大致介绍了什么是Docker和其安装(以Ubuntu为例)。这篇来说说,Docker的基本操作。 非Root用户授权 上一篇的演示中使用的都是默认登...

41180
来自专栏finleyMa

docker学习系列6 docker compose使用

学习 docker 光看是不行的,强烈推荐按照教程敲一遍 https://docs.docker.com/compose/gettingstarted/

11230
来自专栏快乐八哥

Docker Hub工作流程-Docker for Web Developers(6)

在Github上创建项目仓库 和创建其他Github项目一样,在Github创建一个仓库,然后在仓库里面增加一个dockerfile,然后提交并推送到Githu...

21570
来自专栏菩提树下的杨过

docker学习(5) 在mac中创建mysql docker容器

github上有一个专门的docker-libary项目,里面有各种各样常用的docker镜像,可以做为学习的示例,今天研究下其中mysql镜像的用法,国内镜像...

22480
来自专栏北京马哥教育

Docker 完全指南

Docker 作为新瓶装旧酒的一门技术,用简单便捷的操作极大改变了软件开发的流程与生态环境,本文我们就来了解一下。注:Docker 目前已改名为 Moby。

17750
来自专栏CSDN技术头条

在Docker容器中实现安全与隔离

随着容器技术的发展,它的安全、隔离和资源控制的功能也在不断进步。本文中,我们将回顾Docker容器如何仅仅使用linux的原始功能来实现安全与隔离,比如name...

286100
来自专栏五毛程序员

从0开始搭建自动部署环境

36650
来自专栏北京马哥教育

24条 Docker 建议

在TES GLOBAL,我们已经爱上Docker并从Docker的0.8版本开始就在生产环境中使用它。我们的很多开发者都参加了在DockerCon欧洲上的培训...

40040

扫码关注云+社区

领取腾讯云代金券