本文目录一览

1,docker进入容器之后如何退出呢

解决方法:1、安装Docker 借助apt-get命令。2、$ sudo apt-get install docker.io 为了允许非根用户也可以运行Docker,将你自己添加到docker群组。下面这个命令会允许当前用户运行Docker,无需根用户权限。Docker 容器操作退出后进入解决办法:1、nsenter 可以访问另一个进程的名字空间。nsenter 要正常工作需要有 root 权限。 很不幸,Ubuntu 14.4 仍然使用的是 util-linux 2.20。安装最新版本的 util-linux(2.24)版,请按照以下步骤:2、从util-linux版本2.23开始,nsenter工具就包含在其中。它用来访问另一个进程的名字空间。nsenter要正常工作需要有root权限。

docker进入容器之后如何退出呢

2,docker进入容器 之后怎么退出

ctrl+d 退出容器且关闭, docker ps 查看无ctrl+p+q 退出容器但不关闭, docker ps 查看有
解决方法:1、安装Docker 借助apt-get命令。2、$ sudo apt-get install docker.io 为了允许非根用户也可以运行Docker,将你自己添加到docker群组。下面这个命令会允许当前用户运行Docker,无需根用户权限。Docker 容器操作退出后进入解决办法:1、nsenter 可以访问另一个进程的名字空间。nsenter 要正常工作需要有 root 权限。 很不幸,Ubuntu 14.4 仍然使用的是 util-linux 2.20。安装最新版本的 util-linux(2.24)版,请按照以下步骤:2、从util-linux版本2.23开始,nsenter工具就包含在其中。它用来访问另一个进程的名字空间。nsenter要正常工作需要有root权限。
docker 退出容器 在怎么进入先用docker ps -a找到对应的已经停止了的容器id,然后用docker start -ia 启动容器
安装Docker 借助apt-get命令,安装Docker是件轻而易举的事。 $ sudo apt-get install docker.io 为了允许非根用户也可以运行Docker,将你自己添加到docker群组。下面这个命令会允许当前用户运行Docker,无需根用户权限。

docker进入容器 之后怎么退出

3,如何登录到Docker的container中

使用Docker部署container后,我们总有类似的需求:登录到container中进行一些操作。常见的方式1.有ssh方式,特点是不需要特别的root权限,但是container需要安装sshd2.使用nsenter来从container获得一个shell实现登录3.使用nsinit本文主要介绍nsenter的使用nsenter使用非常方便,但是有的操作系统发行版本util-linux包比较老,所以没有包含这个nsenter,那么你需要自己编译和安装,对于hacker们来说,源码编译安装不是小case嘛,走起!注明: 下面的命令运行以Ubuntu 14.04为例1)下载源码git clone git://git.kernel.org/pub/scm/utils/util-linux/util-linux.git util-linuxcd util-linux/2)安装依赖包(这个具体缺少的情况,会在运行./autogen.sh的提示,你也可以直接运行3),根据提示来安装对应的依赖包sudo apt-get install libtoolsudo apt-get install automakesudo apt-get install autopointsudo apt-get install libncurses5-dev3)编译安装./autogen.sh ./configure & make4)测试安装成功./nsenter -V5) 将nsenter加入系统环境可执行路径中sudo cp ./nsenter /usr/bin如何使用nsenter,非常简单,1) 首先找到container对应的进程IDsudo docker inspect --format "2) 执行nsenter获得一个shell ,假设1)获得id是4308sudo nsenter --target 4308 --mount --uts --ipc --net --pid
理解很简单:docker run:启动containerubuntu:你想要启动的image-t:进入终端-i:获得一个交互式的连接,通过获取container的输入/bin/bash:在container中启动一个bash shell这样就进入container的内部了:root@af8bae53bdd3:/#如果有运行中的container,可以在container所在的外部操作系统中运行:docker ps查看到这个container。如果想看到所有的container,包括运行中的,以及未运行的或者说是沉睡镜像,则运行:docker ps -a如果要退出就:ctrl-d或:root@af8bae53bdd3:/# exit如果想再次打开这个container,运行:docker start goofy_almeida其中“goofy_almeida”是镜像的名称这个时候container运行在后台,如果想进入它的终端,则:docker attach goofy_almeida就可以了。

如何登录到Docker的container中

4,电脑中的NTLDR是什么

NTLDR全称是NT Loader,是系统加载程序   NTLDR文件是win nt/win200/WinXP的引导文件,当此文件丢失时启动系统会提示"NTLDR is missing..."并要求按任意键重新启动,不能正确进入系统 。所以应该在系统正常的时候给予备份。   NTLDR文件是做什么的?我们如何来修复NTLDR文件类型的故障呢?   NTLDR文件的是一个隐藏的,只读的系统文件,位置在系统盘的根目录,用来装载操作系统。   一般情况系统的引导过程是这样的: 代码   1、电源自检程序开始运行   2、主引导记录被装入内存,并且程序开始执行   3、活动分区的引导扇区被装入内存   4、NTLDR从引导扇区被装入并初始化   5、将处理器的实模式改为32位平滑内存模式   6、NTLDR开始运行适当的小文件系统驱动程序。   小文件系统驱动程序是建立在NTLDR内部的,它能读FAT或NTFS。   7、NTLDR读boot.ini文件   8、NTLDR装载所选操作系统 *如果NT/XP被选择,,   NTLDR运行Ntdetect.com 对于其他的操作系统,   NTLDR装载并运行Bootsect.dos然后向它传递控制。   windows NT过程结束。   9.Ntdetect.com 搜索计算机硬件并将列表传送给NTLDR,以便将这些信息写进HKE Y_LOCAL_MACHINEHARDWARE中。   10.然后NTLDR装载Ntoskrnl.exe,Hal.dll和系统信息集合。   11.Ntldr搜索系统信息集合,并装载设备驱动配置以便设备在启动时开始工作   12.Ntldr把控制权交给Ntoskrnl.exe,这时,启动程序结束,装载阶段开始   WindowsXP出现此故障的解决办法   当此文件丢失时,我们可以从安装光盘上进行提取,方法是:   1、进入系统故障恢复控制台。   2、转到C盘。   3、输入"copy X:\I386\NTLDR c:\"(说明:X为光驱盘符)并回车,如果系统提示要否覆盖则按下"Y",之后输入exit命令退出控制台重新启动即可。   今天刚遇到的一种情况:使用新硬盘安装系统时,在进行格式化未完成时突然重启,再启动时就出现NTLDR IS MISSING这个提示,换了一个新的硬盘后才没有这个提示。   Windows 2003 server出现此故障的解决办法   1. 用Windows 2003的安装盘启动电脑,进入Windows 2003 Server的安装界面;    2. 界面提示“要修复Windows 2003 server的安装,请按R”,按R键继续;3. 屏幕出现故障恢复控制台提示“C:\Winnt,要登录到哪个Windows 2003安装(要取消,请按Enter)?”,在此键入“1”,然后按Enter键;    4. 键入管理员密码,然后按Enter键;    5. 键入Copy H:\WIN2003\ENT\I386\Ntldr c:\,按ENTER键(注:我使 用的光盘是Windows 2003二合一光盘,如果是其他的安装盘,可以使用搜索命令查找一下ntldr文件的位置,一般在i386目录下。“h:”为 我的光盘驱动器号),如果系统提示您是否覆盖文件,键入Y,然后按Enter键。   最近一段时间我出现了这种情况,每次开机,都出现NTLDR is missing,press any key to restart,后面还有一句忘了,出现这种情况后,我重启开机按F10进入选择启动项,选择硬盘启动,year进如了,呵呵,如过你出现这种情况,也可以试试这种方法。
NTLDR全称是NT Loader,是系统加载程序 NTLDR文件是win nt/win200/WinXP的引导文件,当此文件丢失时启动系统会提示"NTLDR is missing..."并要求按任意键重新启动,不能正确进入系统 。所以应该在系统正常的时候给予备份。
windows系统启动文件

5,如何正确安装nsenter

如果想通过ssh进入container,需要需要安装nsenter,安装步骤如下:wget https://www.kernel.org/pub/linux/utils/util-linux/v2.24/util-linux-2.24.tar.gztar -zxf-cd util-linux-2.24./configure –without-ncursesmakecp nsenter /usr/local/bin/这个地方有个坑,之前我写的是make && make install,经阿里云的技术团队测试,make之后千万不能make install,make install后会替代操作系统底层的一些东西,直接影响linux操作系统的启动,在阿里云上会导致ubuntu14.0.4不能启动,其实只需要把nsenter 复制到/usr/local/bin目录下即可。国内其他文档介绍安装nsenter的时候都没说明这些,在此特别写篇博客记录一下。找到mysql容器的第一个进程的PIDPID=`docker inspect --format "然后渗入(需要root权限)sudo nsenter --target $PID --mount --uts --ipc --net --pid
使用nsenter进入docker容器docker容器运行后,如何进入容器进行操作呢?起初我是用ssh。如果只启动一个容器,用ssh还能应付,只需要将容器的22端口映射到本机的一个端口即可。当我启动了五个容器后,每个容器默认是没有配置ssh server的,安装配置sshd,映射容器ssh端口,实在是麻烦。我发现很多docker镜像都是没有安装sshd服务的,难道有其他方法进入docker容器?浏览了docker的文档,我没有找到答案。还是要求助于无所不能的google,万能的google告诉我用nsenter吧。在大多数linux发行版中,util-linux包中含有nsenter.如果没有,你需要安装它.cd /tmpcurlhttps://www.kernel.org/pub/linux/utils/util-linux/v2.24/util-linux-2.24.tar.gz\| tar -zxf-cd util-linux-2.24./configure --without-ncursesmake nsentercp nsenter /usr/local/bin使用shell脚本 docker-enter,将如下代码保存为docker-enter,chomod +x docker-enter#!/bin/shif [ -e $(dirname "$0")/nsenter]; then# with boot2docker, nsenter is not inthe path but it is in the same foldernsenter=$(dirname"$0")/nsenterelsensenter=nsenterfiif [ -z "$1" ]; thenecho "usage: `basename"$0"` container [command [arg]...]"echo ""echo "enters the docker containerand executes the specified command."echo "if command is not specified,runs an interactive shell in container."elsepid=$(docker inspect --format"if [ -z "$pid" ]; thenexit 1fishiftopts="--target $pid --mount --uts--ipc --net --pid --"if [ -z "$1" ]; then# no command given.# use su to clear all hostenvironment variables except for term,# initialize the environmentvariables home, shell, user, logname, path,# and start a login shell."$nsenter" $opts su -rootelse# use env to clear all hostenvironment variables."$nsenter" $opts env--ignore-environment -- "$@"fifi运行 docker-enter ,这样就进入到指定的容器中 关于nsenter更详细的使用方法见这里 https://github.com/jpetazzo/nsenter

6,如何进入 Docker 容器

从util-linux版本2.23开始,nsenter工具就包含在其中。它用来访问另一个进程的名字空间。nsenter要正常工作需要有root权限。很不幸,Ubuntu 14.4仍然使用的是util-linux版本2.20。安装最新版本的util-linux(2.24)版,请按照以下步骤:  为了连接到容器,你还需要找到容器的第一个进程的PID。  docker inspect --format "  通过这个PID,你就可以连接到这个容器:  nsenter --target $PID --mount --uts --ipc --net --pid  nsinit  从0.9版本开始,Docker自身就具有一个管理容器的库,名字为 libcontainer。libcontainer中的nsinit工具允许用户直接访问linux名字空间和cgroup内核。在安装nsinit之前,你首先需要安装Go运行时环境:  apt-get install git golang-go mkdir -p $HOME/go-dev/binmkdir -p $HOME/go-dev/src echo "export GOPATH=\$HOME/go-dev" >> ~/.profileecho "PATH=\$PATH:\$GOPATH/bin" >> ~/.profile source ~/.profile  接下来才安装nsinit:  mkdir -p $GOPATH/src/github.com/dotcloudcd $GOPATH/src/github.com/dotcloud git clone https://github.com/dotcloud/docker.gitcd $GOPATH/src/github.com/dotcloud/docker /usr/bin/go get -v github.com/dotcloud/docker/vendor/src/github.com/docker/libcontainer/nsinit  nsinit读取的是位于/var/lib/docer/execdriver/native/<container-id>容器目录下的配置数据。要运行nsinit,你需要切换到容器目录下。由于/var/lib/docker目录对于root用户是只读权限,因此你还需要root权限。通过docker的ps命令,你可以确定容器ID。一旦你进入/var/lib/docker目录,你就可以连接容器了:  nsinit exec /bin/bash      lxc(-attach)  直到Docker 0.8.1版本为止,LXC一直是管理容器的基本工具,Docker一直支持这个工具。但是从0.9.0版本开始,Docker默认使用libcontainer管理容器,不再依赖LXC了。因此默认情况下,你不能使用lxc-attach了。  如果你仍然希望使用lxc-attach,那么你需要使用-e lxc选项来重新启动Docker服务进程。使用这个选项,Docker的内部将再次使用LXC管理容器了。完成这个任务最简单的做法就是创建/etc/default/docker文件(如果这个文件仍然不存在),并添加以下内容:  DOCKER_OPTS=" -e lxc"  现在你可以重新启动Docker服务了。要连接容器,你需要知道完整的容器ID:  docker ps --no-trunc  接下来,你就可以连接这个容器了。要完成下面工作,你还需要root权限:  lxc-attach -n <container-id> -- /bin/bash        sshd  上面所有三种方法都要求具有主机系统的root权限。为了不采用root权限,通过ssh访问容器将是一个很好的选择。  要做到这一点,你需要构建一个支持SSH服务的基础映像。此时,我们可能遇到这样的问题:我们是不是用Docker CMD或者ENTRYPOINT运行一条命令就可以了?如果此时有sshd进程运行,那么我们就不要再运行其他进程了。接下来的工作是创建一个脚本或者使用像supervisord这样的进程管理工具来启动其它所有需要启动的进程。有关如何使用supervisord的 优秀的文档可以在Docker的web站点上找到。一旦你启动了具有sshd进程的容器,你就可以像以往一样通过ssh客户端了连接这个容器了。
安装Docker  借助apt-get命令,安装Docker是件轻而易举的事。  $ sudo apt-get install docker.io  为了允许非根用户也可以运行Docker,将你自己添加到docker群组。下面这个命令会允许当前用户运行Docker,无需根用户权限。  $ sudo usermod -a -G docker $USER  退出,然后重新登录,以激活群组成员的变化。  下一步,编辑Docker配置文件,以便更新Docker二进制代码的位置。  $ sudo vi /etc/default/docker.io DOCKER="/usr/bin/docker.io"  重启Docker服务。  $ sudo service docker.io restart  管理Docker容器  如果你想启动Ubuntu操作系统的一个新的Docker容器,首先需要获取Ubuntu Docker映像文件。下面这个命令会通过网络下载Docker映像文件。  $ docker pull ubuntu  你可以以一种交互模式来开启Ubuntu Docker,如下所示。最后一个参数“/bin/bash”是一旦启动就将在容器里面执行的命令,这里是一个简单的bash外壳命令。  $ docker run -i -t ubuntu /bin/bash

文章TAG:进入  容器  之后  如何  nsenter  
下一篇