51Testing软件测试论坛

标题: docker使用小结 [打印本页]

作者: 一纸荒年    时间: 2018-4-11 15:26
标题: docker使用小结
1.docker中文文档
docker使用一些心得

1.进入容器的方式,attach和exec
使用attach进入经常会卡死,在网上找到了一些说明,但不知道是否属实,如下
[plain] view plain copy
为什么执行 docker attach 卡住了?  

首先要明确的是 docker attach 不是一个用来进入容器的命令, 或者说他不是用来在容器内运行一个 bash(shell)
的命令, 它是用来连接到容器中运行中的进程, 也就是容器的 CMD, 容器内 PID=1 的那个进程, 如果这个进程没
有 stdout/stderr 那么你将看不到任何输出, 如果它没有接收 stdin 你也无法发送指令给它. 这也就是为什么你运
行一个 bash 的容器, 就可以 attach 进去执行命令, 而你运行一个 mysql server 的容器就无法操作的原因  
总之,现在来看还是使用交互式的exec -it来的方便

[plain] view plain copy
docker exec -it 容器id /bin/bash  
2. docker的守护态运行
让docker在后台运行,在启动容器的时候加上"-d"命令
[html] view plain copy
docker run -d  
3. 来自中文文档里的使用 Supervisor 来管理进程
[html] view plain copy
Docker 容器在启动的时候开启单个进程,比如,一个 ssh 或者 apache 的 daemon 服务。但我们经常需要在
一个机器上开启多个服务,这可以有很多方法,最简单的就是把多个启动命令放到一个启动脚本里面,启动
的时候直接启动这个脚本,另外就是安装进程管理工具。  

暂时先这么多吧。
发现我运行一个新的容器的时候,卡住了,一直显示
[html] view plain copy
*** Running /etc/rc.local...  
*** Booting runit daemon...  
*** Runit started as PID 8  

正在排查...
错误原因,要加上-d(daemon模式),使docker在后台运行。另外创建的时候,不使用docker,这里使用nvid
ia-docker,使得容器能够加载nvidia的配置环境。
[html] view plain copy
nvidia-docker run -d --name USER_NAME -v /home/USER_NAME:/home/USER_NAME -p 7003:22 IMAGE_N
AME /sbin/my_init  
又发现一个问题,root设置了新密码后,无法以root身份登录。但是却可以以一般身份登录。倒腾了很久,
后来发现是/etc/passwd里的root这一行信息有误,root里加载的shell写成了/usr/zsh,/usr下根本没有zsh,
改成了/bin/zsh就可以了。







欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2