`

连接到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:/#



分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics