从2011年开始用vmware到Vgrant再到现在的docker,这些软件变得越来越快而且聪明。虚拟化软件时特别依赖ssh服务去登录到虚拟机里面进行调试,所以开始用docker的时候也习惯于ssh登录到里面进行修改,慢慢的发现违背了docker初衷。

docker其实目标有点想java代码一样“一次编译到处运行”,也就是当你构建完你的docker镜像后就不需要经常登录到你的容器内部去做操作,容器本身是一个无状态,用后即焚的东西。为了尽量的轻量快捷建议一个容器尽量只有一个进程,否则你的容器会越来越大,越来越像一个虚拟机一样笨重不宜维护。

当然docker官方还是提供了方法让进入到容器进行调试,下面介绍下:

exec方法

在内运行命令(命令退出不会影响容器运行)

[root@salt-node1 pkg]# docker exec --help
Usage:docker exec [OPTIONS] CONTAINER COMMAND [ARG...]
Run a command in a running container
Options:-d, --detach               后台运行命令--detach-keys string   Override the key sequence for detaching a container-e, --env list             使用环境便令 (默认是列表[])--help                 Print usage-i, --interactive          使用标准输入--privileged           给命令提升权限-t, --tty                  分配一个终端-u, --user string          使用用户或者id (format: <name|uid>[:<group|gid>])下面命令就是创建一个输入流和终端进入容器执行命令
[root@salt-node1 pkg]# docker exec -ti demo1 /bin/sh
# ps -ef
UID         PID   PPID  C STIME TTY          TIME CMD
redis         1      0  0 14:25 ?        00:00:00 redis-server *:6379
root         12      0  0 14:27 ?        00:00:00 /bin/sh
root         16     12  0 14:27 ?        00:00:00 ps -ef使用指定用户登录容器
[root@salt-node1 pkg]# docker exec -ti  -u redis demo1 /bin/sh
$ id
uid=999(redis) gid=999(redis) groups=999(redis)指定登录终端的环境变量
[root@salt-node1 pkg]# docker exec -ti  -e service=blog.nginxs.net  -e ctime='2017-03-04 22:38' demo1 /bin/sh
# env
HOSTNAME=78bd4fa22582
HOME=/root
ctime=2017-03-04 22:38
REDIS_DOWNLOAD_SHA1=6780d1abb66f33a97aad0edbe020403d0a15b67f
TERM=xterm
service=blog.nginxs.net
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
REDIS_DOWNLOAD_URL=http://download.redis.io/releases/redis-3.2.8.tar.gz
REDIS_VERSION=3.2.8
GOSU_VERSION=1.7
PWD=/data
# echo $ctime
2017-03-04 22:38
# exit
[root@salt-node1 pkg]# #前端运行一个容器
[root@salt-node1 pkg]# docker run -it  centos
[root@efd2c7e14ef4 /]# df
Filesystem                                                                                       1K-blocks     Used Available Use% Mounted on
/dev/mapper/docker-8:3-78681558-2adb3ef25d882c28c20263b9e894d6a7e9067a646bba84042475a0dcb55948e1  10474496   240760  10233736   3% /
tmpfs                                                                                               933632        0    933632   0% /dev
tmpfs                                                                                               933632        0    933632   0% /sys/fs/cgroup
/dev/sda3                                                                                         18555904 15322128   3233776  83% /etc/hosts
shm                                                                                                  65536        0     65536   0% /dev/shm
tmpfs                                                                                               933632        0    933632   0% /sys/firmware

attach方法

(命令退出容器即结束运行)

[root@salt-node1 pkg]# docker attach --help
Usage:docker attach [OPTIONS] CONTAINER
和运行容器内部进行输入
Options:--detach-keys string   覆盖容器内隔离的key--help                 Print usage--no-stdin             不传输标准输入--sig-proxy            代理所有接受到的信号默认开启,关闭后Ctrl+c容器将不再退出

如果你的容器是一个系统则可以直接attach进行使用shell,否则无法正常通讯

转载于:https://blog.51cto.com/nginxs/1903282

运维之我的docker-不要在给你的docker安装ssh server相关推荐

  1. demo 网络运维_【运维面试】面试官:你们公司的docker主要用来做啥?

    文章来源: [运维面试]面试官:你们公司的docker主要用来做啥?_涅槃重生-CSDN博客​blog.csdn.net 前言 关于docker的面试题,很多面试官会问,你们公司的docker主要用来 ...

  2. IT运维面试问题总结-运维工具、开源应用(Ansible、Ceph、Docker、Apache、Nginx等)

    1.简述Ansible及其优势? Ansible是一款极其简单的开源的自动化运维工具,基于Python开发,集合了众多运维工具(puppet, cfengine, chef, func, fabric ...

  3. docker启动odoo提示module没有安装_Windows Server 2019上的Docker 入门

    本文字数:1679字 阅读时间:6分钟 导读 Windows Server 2019 现在可以使用了!它是Windows Server的下一个长期支持版本,对运行Docker Windows容器进行了 ...

  4. 【运维面试】面试官:你们公司的docker主要用来做啥?

    前言 关于docker的面试题,很多面试官会问,你们公司的docker主要用来做啥? 或者 docker有几种网络模式,还有的面试官会问一些基础命令. 当然也会有公司问docker和vmware的区别 ...

  5. docker安装fastdfs_【运维面试】面试官:你们公司的docker主要用来做啥?

  6. 自动化运维之CentOS7下PXE+Kickstart+DHCP+TFTP+HTTP无人值守安装系统

    一.概述 1.关于PXE Preboot Execution Environment翻译过来就是预启动执行环境;简称PXE;传统安装操作系统的方法是CDROM或U盘引导,而PXE技术解决的是从网络引导 ...

  7. CentOS 6.5自动化运维之基于DHCP和TFTP服务的PXE自动化安装centos操作系统详解

    前言    如果要给很多台客户端主机安装操作系统,要是每一台都拿张安装光盘一台一台主机的去装系统那就太浪费时间和精力了.在生产环境中也不实际,要实现为多台主机自动安装操作系统,那我们怎么实现自动化安装 ...

  8. 运维之红帽管理员篇-----1. Linux系统简介 、 安装RHEL7系统 、 RHEL7基本操作

    ONE DAY 总结: 1970-1-1 Linus Torwalds clone-vm7 cat  /etc/redhat-release name  -r 挂载点: 在Linux访问设备资源的访问 ...

  9. docker 厂商 容器_疫情期间,Docker让运维人员雪上加霜

    2020疫情原因,公司业绩下滑严重,于是决定给团队瘦身,经过激烈的讨论,最终决定先从运维人员开始.原因是我们引入了Docker.它部署项目相比之前要简单许多.运维的工作完全可以被开发替代.当然我们小公 ...

  10. 【大咖有约】Garena 黄智凯:利用Docker构建自动化运维平台

    Garena公司DBA黄智凯先生将作为DTCC 2016中国数据库技术大会特邀嘉宾出席.并将于5月14日"数据库自动化运维"专场分享题为<利用Docker构建自动化运维平台& ...

最新文章

  1. debian预装环境软件的设置
  2. 部署自建CA颁发证书实现https加密
  3. C++ STL中vector用法简要总结
  4. Synchronize锁重入
  5. 如何黑掉一台根本不联网的电脑
  6. 做java技术天花板在哪里?我突然发现影响你晋升的竟然不是技术!
  7. php在html中生成option,使用PHP可以将HTML SELECT/OPTION值设为NULL吗?
  8. Android studio如何更改应用程序的图标以及名称
  9. 全网最新Redis结合Kaptcha实现验证码功能篇一(前后端分离)
  10. 2299元!荣耀X30 12+256GB大内存版开售:窄边直屏天花板
  11. 【2021牛客暑期多校训练营4】Average (二分答案,区间/子数组最大平均值,)
  12. cherry G80-3000茶轴空格左边失灵,经常无法触发按钮,安装空格卫星轴零件
  13. 何园–中国晚清第一园
  14. 知识社会的到来:知识管理与知识协同
  15. 今天安利几个实用的APP给你
  16. MySQL为什么lsof会看到这么多临时文件
  17. 关于DXP的规则检查中Un-Rounted Net Constraint问题
  18. 0601课的预习任务
  19. Linux命令行下的文本编辑器
  20. 《zw版·Halcon-delphi系列原创教程》 只有2行代码的超市收款单ocr脚本

热门文章

  1. 科技前沿---全息手机、全息图像
  2. 常见Sqlite管理工具
  3. 创建模块化程序(三)
  4. o'LogonUI Changer XP登陆界面更换器
  5. 统计计算机考试题,销售统计表计算机windows一级最新考试试题
  6. mysql维护分区脚本_MySQL 分区表脚本
  7. Deadline调度器之(二):细节和使用方法
  8. 初窥Linux 之 ext2/ext3文件系统
  9. 【动态规划】数位DP入门题:不要62
  10. XY相互独立,且服从指数分布,求U=max(X,Y)和V=min(X,Y)的概率密度函数