`

连接到Hyperledger的docker容器内部

 
阅读更多
========================================================
进入Docker容器的4种方式
========================================================
实际操作
root@ThinkPad-T450:/home/angie# ./connectDocker.sh orderer.example.com
容器ID:d8f8d32ed879
容器PID:18633
开始连接容器。。。
mesg: ttyname failed: No such file or directory
root@d8f8d32ed879:/# w
12:59:15 up 11:11,  0 users,  load average: 0.32, 0.38, 0.40
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
root@d8f8d32ed879:/# ps -ef
UID        PID  PPID  C STIME TTY          TIME CMD
root         1     0  0 12:51 ?        00:00:00 orderer
root        19     0  0 12:59 ?        00:00:00 -bash
root        26    19  0 13:00 ?        00:00:00 ps -ef
root@d8f8d32ed879:/#

========================================================
参考的文章


http://blog.csdn.net/u010716706/article/details/60965101

当我们运行好docker容器之后常常需要进入docker容器内部进行一些操作:
1.docker本身提供了attach命令可以实现这一需求:

$ docker attach [容器名]

attach连接docker后,退出docker容器有两种方式:
1.1 按CTRL + D或者输入exit命令退出,这种方式会引起容器停止运行
1.2 先按CTRL +P 再按CTRL + Q退出,这种方式理论上不会引起容器停止运行,实际上还是偶尔引起容器停止运行,出现奇奇怪怪的问题。
所以,我打算介绍一种比较稳妥的方式。

2.利用util-linux包的nsenter命令连接docker容器
2.1 安装util-linux步骤

$ wget https://www.kernel.org/pub/linux/utils/util-linux/v2.29/util-linux-2.29.1.tar.gz -c /usr/local/src
$ tar xvf util-linux-2.29.1.tar.gz
$ ./configure –without-ncurses
$ make #注意不要make install
$ cp nsenter /usr/local/bin/

2.2 编写连接脚本:connect.sh

#!/bin/sh
CONTAINER_NAME=$1
if [ ! -n "$CONTAINER_NAME" ];then
    echo "请输入即将要登录的容器名称,例如要登录容器xiaoniuapp-api,请输入:./connect.sh xiaoniuapp-api"
else
    CONTAINER_ID=`docker ps -a | grep $CONTAINER_NAME -w | awk '{print $1}'`
    echo "容器ID:"$CONTAINER_ID
    CONTAINER_PID=`docker inspect --format "{{ .State.Pid }}" $CONTAINER_ID`
    echo "容器PID:"$CONTAINER_PID
    echo "开始连接容器。。。"
    nsenter --target $CONTAINER_PID --mount --uts --ipc --net --pid
fi

2.3 使用脚本

$ chmod u+x connect.sh
$ ./connect.sh [容器名]

示例如下:

[root@Dockerdeploy-app ~]# docker run -i -t --name mynginx nginx /bin/bash
root@063e449682f7:/##先按CTRL +P 再按CTRL + Q退出
[root@Dockerdeploy-app ~]# docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
063e449682f7        nginx               "/bin/bash"         10 seconds ago      Up 9 seconds        80/tcp, 443/tcp     mynginx
[root@Dockerdeploy-app ~]# ./connect.sh mynginx
容器ID:063e449682f7
容器PID:1491
开始连接容器。。。
root@063e449682f7:/#



分享到:
评论

相关推荐

    Docker 容器与容器云(高清扫描版)

    从实践者的角度出发,以Docker和Kubernetes为重点,沿着“基本用法介绍”到“核心原理解读”到“高级实践技巧”的思路,一本书讲透当前主流的容器和容器云技术,有助于读者在实际场景中利用Docker容器和容器云解决...

    docker容器入门与实践期末考试总复习.docx

    Docker 容器入门与实践期末考试总复习 在本节总结中,我们将详细介绍 Docker 容器技术的基本概念、优点、架构、Namespace 和 Cgroup 等关键技术点,并总结 Docker 容器技术在实际应用中的价值。 容器技术解决了...

    docker容器无法访问宿主机端口的解决

    最近在工作时遇到一个问题,docker容器无法访问宿主机的redis,telent6379端口不通。 经排查发现,该服务器启用了防火墙,防火墙把6379的端口的访问授权给docker0网卡访问即可。 操作如下: firewall-cmd –...

    Docker 容器与容器云(第2版)

    本书从实践者的角度,在讲解Docker高级实践技巧的同时,深入到源代码层次,为读者梳理出Docker容器技术和基于Docker的容器云技术(如Kubernetes)的实现方法和设计思路,帮助读者理解如何在实际场景中利用Docker解决...

    prometheus监控docker容器详细资料—超详细,超全面(带文档和相关软件包)

    - 使用`cadvisor`:一个开源工具,能够更详细地收集Docker容器的资源使用情况,包括容器内部应用的指标。 3. **Prometheus Client Libraries**: - 在Docker容器内运行的应用程序可以使用Prometheus客户端库(如...

    Docker容器中文乱码(修改docker容器编码格式)的解决方案

    kubectl exec进入到docker容器中进行查看时发现,文件在容器中也是中文文件名显示异常。查看docker容器编码格式:执行locale命令;可以看到当前编码格式为POSIX,而这种编码格式不支持中文  解决办法:locale -a查

    Docker容器部署tomcat出现中文乱码.docx

    Docker 容器中 Tomcat 部署出现中文乱码解决方案 在 Docker 容器中部署 Tomcat 时,可能会遇到中文乱码的问题,这是由于 Docker 容器的 locale 设置导致的。在本文中,我们将介绍如何解决这个问题。 什么是 locale...

    Docker 容器与容器云(第2版) PDF带电子目录

    Docker 容器与容器云(第2版) PDF版本,带电子目录,结构清晰

    一种对Docker容器镜像实现离线增量更新的方法.pdf

    "一种对Docker容器镜像实现离线增量更新的方法" Docker 容器镜像离线增量更新方法是指在不影响容器运行的情况下,对 Docker 容器镜像进行增量更新的方法。该方法可以提高 Docker 容器镜像的更新效率,减少更新过程...

    Docker容器与容器云(第二版)

    docker容器与容器云的文档,有助于理解docker的知识。

    创建docker容器,配置容器ip桥接,在容器内安装tomcat

    然后,需要将容器连接到桥接网络: `docker run -it --name mycontainer --net mybridge centos:7` 四、 在容器内安装 Tomcat 服务 要在容器内安装 Tomcat 服务,需要使用以下命令: `docker exec -it ...

    python脚本通过监控docker容器日志监控hyperledger fabric区块高度、共识时延信息

    python脚本通过监控docker容器日志监控hyperledger fabric区块高度、共识时延信息 注意修改文件中数据库信息

    虚拟化与Docker容器技术.pdf

    2. 资源限制:Docker 容器的资源使用受到宿主操作系统的限制。 Docker 容器技术是一种轻量级的虚拟化技术,它可以提供快速、灵活和可靠的应用程序部署解决方案。 知识点: 1. 虚拟化技术分类:系统虚拟化和进程...

    Hyperledger Fabric 搭建 mac and centos7

    Hyperledger Fabric 搭建 mac and centos7 压缩包包含 1.boot2docker.iso version:17.09.1-ce 2.fabric 官方例子 3.mac and centos7 一键安装脚本

    docker 容器技术ppt

    docker内部培训的PPT,简介了docker容器技术的强大。为什么要使用docker容器技术。

    详解docker 容器不自动退出结束运行的方法

    本文主要简单介绍 docker 容器与前置进程的关系,以及如何编写 Dockerfile/docker-compose.yml 优雅的让容器可以常驻运行。 docker 容器的生命周期是同容器中的前置进程相关在一起的,这也是我们平时可能会遇到一些...

    docker容器中支持的中文字体

    docker容器中支持的中文字体

    hyperledger-fabric环境

    Hyperledger Fabric是Linux基金会发起的开源项目,是一个用于创建分布式账本技术(DLT)的框架,特别适合构建企业级区块链解决方案。它提供了一个模块化的架构,允许灵活的设计选择,如共识机制、智能合约(链码)...

Global site tag (gtag.js) - Google Analytics