Oracle 系统管理 - Linux 系统 - Backtrack 5 - 安全 - Juniper 技术 - Cisco 技术 - 思科模拟器 - Cisco 认证 - Cisco ios 下载

您现在的位置是:Docker > Docker > docker 使用经验总结

docker 使用经验总结

时间:2018-05-20 17:15  来源:未知  阅读次数: 复制分享 我要评论

1.进入容器的方式,attach和exec
使用attach进入经常会卡死,在网上找到了一些说明,但不知道是否属实,如下
[plain] view plain copy
  1. 为什么执行 docker attach 卡住了?  
  2. 首先要明确的是 docker attach 不是一个用来进入容器的命令, 或者说他不是用来在容器内运行一个 bash(shell) 的命令, 它是用来连接到容器中运行中的进程, 也就是容器的 CMD, 容器内 PID=1 的那个进程, 如果这个进程没有 stdout/stderr 那么你将看不到任何输出, 如果它没有接收 stdin 你也无法发送指令给它. 这也就是为什么你运行一个 bash 的容器, 就可以 attach 进去执行命令, 而你运行一个 mysql server 的容器就无法操作的原因  
总之,现在来看还是使用交互式的exec -it来的方便
[plain] view plain copy
  1. docker exec -it 容器id /bin/bash  
2. docker的守护态运行
让docker在后台运行,在启动容器的时候加上"-d"命令
[html] view plain copy
  1. docker run -d  
3. 来自中文文档里的使用 Supervisor 来管理进程
[html] view plain copy
  1. Docker 容器在启动的时候开启单个进程,比如,一个 ssh 或者 apache 的 daemon 服务。但我们经常需要在一个机器上开启多个服务,这可以有很多方法,最简单的就是把多个启动命令放到一个启动脚本里面,启动的时候直接启动这个脚本,另外就是安装进程管理工具。  
暂时先这么多吧。
发现我运行一个新的容器的时候,卡住了,一直显示
[html] view plain copy
  1. *** Running /etc/rc.local...  
  2. *** Booting runit daemon...  
  3. *** Runit started as PID 8  
正在排查...
错误原因,要加上-d(daemon模式),使docker在后台运行。另外创建的时候,不使用docker,这里使用nvidia-docker,使得容器能够加载nvidia的配置环境。
[html] view plain copy
  1. nvidia-docker run -d --name USER_NAME -v /home/USER_NAME:/home/USER_NAME -p 7003:22 IMAGE_NAME /sbin/my_init  
又发现一个问题,root设置了新密码后,无法以root身份登录。但是却可以以一般身份登录。倒腾了很久,后来发现是/etc/passwd里的root这一行信息有误,root里加载的shell写成了/usr/zsh,/usr下根本没有zsh,改成了/bin/zsh就可以了。

使用xmanager直连docker

需要使用ssh的方式进行连接。如果配置好了端口号,仍然无法连接,可能是ssh没有启动,关于ssh的使用方法参考这里Ubuntu 16.04开启SSH服务
简单一句命令
[html] view plain copy
  1. sudo service ssh start 
相关资讯