前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Docker学习之SSH连接docker容器

Docker学习之SSH连接docker容器

作者头像
小柒2012
发布2019-12-09 16:04:44
10.9K0
发布2019-12-09 16:04:44
举报
文章被收录于专栏:IT笔记IT笔记

前言

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

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

SSH连接

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

查看镜像:

代码语言:javascript
复制
[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

创建并运行容器:

代码语言:javascript
复制
docker run -tid --name app_learn -p 5001:22 -p 5000:8080 -v /home/app_learn/:/mnt/app/ 3fa822599e10 /usr/sbin/init

进入容器:

代码语言:javascript
复制
docker exec -it app_learn /bin/bash

安装依赖:

代码语言:javascript
复制
yum install passwd openssl openssh-server openssh-clients -y

安装service命令:

代码语言:javascript
复制
yum install initscripts -y

修改密码:

代码语言:javascript
复制
[root@8c213535c149 mnt]# passwd
Changing password for user root.
New password: 
Retype new password: 
passwd: all authentication tokens updated successfully.

修改配置:

代码语言:javascript
复制
vi /etc/ssh/sshd_config

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

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

代码语言:javascript
复制
service sshd restart
chkconfig sshd on

远程连接:

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

4.png
4.png

原生连接

代码语言:javascript
复制
docker ps

docker attach app_learn

ls

exit

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

代码语言:javascript
复制
docker exec

docker exec -it app_learn /bin/bash

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

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018-02-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

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

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • SSH连接
  • 原生连接
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档