docker run --rm -v /usr/local/bin:/target jpetazzo/nsenter
编写如下脚本,命名为enter-docker
#!/bin/bash
PID=$(docker inspect --format "{{ .State.Pid }}" $1)
nsenter --target $PID --mount --uts --ipc --net --pid
将脚本改为755权限,并放到PATH环境变量所指的目录,如/usr/bin
然后就可以直接用
enter-docker <容器ID>/<容器名称>
进入容器了。如下图所示。
2.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 -vgithub.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
3.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
上面所有三种方法都要求具有主机系统的root权限。为了不采用root权限,通过ssh访问容器将是一个很好的选择。
要做到这一点,你需要构建一个支持SSH服务的基础映像。此时,我们可能遇到这样的问题:我们是不是用Docker CMD或者ENTRYPOINT运行一条命令就可以了?如果此时有sshd进程运行,那么我们就不要再运行其他进程了。接下来的工作是创建一个脚本或者使用像supervisord这样的进程管理工具来启动其它所有需要启动的进程。有关如何使用supervisord的 优秀的文档可以在Docker的web站点上找到。一旦你启动了具有sshd进程的容器,你就可以像以往一样通过ssh客户端了连接这个容器了。
5.docker attach命令
docker attach <容器ID>/<容器名称>
然后回车即可进入容器,需要主机的是,如果使用Ctrl+D退出容器,将导致容器关闭。
只能使用Ctrl+P然后Ctrl+Q退出容器。
此命令从1.1版本开始有效。
相关推荐
kubectl exec进入到docker容器中进行查看时发现,文件在容器中也是中文文件名显示异常。查看docker容器编码格式:执行locale命令;可以看到当前编码格式为POSIX,而这种编码格式不支持中文 解决办法:locale -a查
2.启动并进入bash docker run -it -d ubuntu:lastest /bin/bash # 查看刚刚运行容器的id docker ps # 在容器中执行bash命令 docker exec -it id /bin/bash 3.安装openssh-server并启动 apt-get update apt-get ...
Docker 容器的四种进入方式分别是:使用 docker attach 进入 Docker 容器、使用 SSH 进入 Docker 容器、使用 nsenter 进入 Docker 容器和使用 docker exec 进入 Docker 容器。 nsenter 是一个非常有用的工具,可以让...
本文将详细介绍如何进入运行中的Docker容器,并探讨不同的方法及其适用场景。 Docker容器技术为应用的快速部署、隔离和移植提供了一种轻量级和高效的解决方案。在开发和运维过程中,有时需要进入运行中的容器进行...
Docker 容器技术文档 ...* `docker exec -it CONTAINER ID /bin/bash`:进入容器。 * `exit`:退出容器。 Docker 容器技术提供了一种轻量级的操作系统虚拟化解决方案,能够在隔离的环境中运行多个应用程序。
### 控制Docker容器日志大小的方法 #### 概述 在Docker环境中,容器的日志文件如果未能得到有效的管理,很容易导致宿主机磁盘空间被迅速占用,从而影响整个系统的稳定性和性能。本文将详细介绍如何针对新创建的...
Docker容器与容器云(第2版)根据Docker 1.10版和Kubernetes 1.2版对第1版进行了全面更新,从实践者的角度出发,以Docker和Kubernetes为重点,沿着“基本用法介绍”到“核心原理解读”到“高级实践技巧”的思路,一本...
进入docker容器后如果退出容器,容器就会变成Exited的状态,那么如何退出容器让容器不关闭呢? 如果要正常退出不关闭容器,请按Ctrl+P+Q进行退出容器,这一点很重要,请牢记! 以下示例为退出容器但不关闭容器 ...
### 基于微服务和Docker容器技术的PaaS云平台架构设计 #### 微服务架构概述 本文档旨在探讨一种高效的云平台建设方法,该方法基于微服务架构和Docker容器技术,旨在为开发团队提供一套完整的服务快速开发、部署、...
Docker容器技术
- **运行**: 容器启动后即进入运行状态。 - **停止**: 使用适当的命令安全地停止容器,以避免数据丢失或服务中断。 - **删除**: 清理不再需要的容器,释放资源。 #### 如何停止 Docker 容器 1. **优雅停止**: - ...
Docker容器修改配置文件的实现涉及的关键知识点可以从以下方面进行详细阐述: 1. Docker容器的基本概念:Docker是一种开源的容器化平台,它允许开发者打包应用及其依赖包到一个可移植的容器中,然后在任何支持...
标题中的"enter-docker-fzf"是一个专门为Fish shell(一种友好、交互式的命令行环境)设计的脚本,用于方便用户快速进入正在运行的Docker容器。这个工具结合了`fzf`(一个用于命令行的快速选择工具)的功能,让用户...
使用 `docker attach` 或 `docker exec` 命令可以进入容器。例如,要进入名称为 `cent` 的容器,可以使用以下命令: ``` docker attach cent ``` 或 ``` docker exec -it cent /bin/bash ``` 导出容器 使用 `docker...
本文将详细介绍Docker容器应用日志查看的常用方法。 首先,要查看Docker容器的日志,最常用的方式是使用`docker logs`命令。这个命令可以帮助用户获取容器的日志输出,非常适合诊断容器中运行的应用程序问题。使用...
1. 进入容器内部后 cat /etc/hosts 会显示自己以及(– link)软连接的容器IP 2.使用命令 docker inspect --format '{{ .NetworkSettings.IPAddress }}' <container> 或 docker inspect 或 docker ...
Docker容器详解 1 1. 介绍 1 1.1. 什么是Docker? 1 1.2. 为什么需要Docker? 1 1.3. Docker可以干嘛? 1 1.4. 什么是Dockfile? 1 1.5. 什么是Docker Compose? 5 2. 环境搭建 8 2.1. Docker环境准备 8 ...
Docker Swarm 在今年的研究中以 11%的比例进入了第二位,超过了基于 Mesos 的工具。 4. 密度 报告显示,每位客户每个主机的容器中位数从 10 个增加到 15 个。最高的,在本次调查中,我们看到一个组织在一台主机上...