docker登录运行中的容器的4方案
目前容器云非常的成熟,也有很多的使用案例,可以说不是什么高大上的东西了,可以说整个云计算也不是什么奢侈品,而是基础设施。但是如何使用,就成了必须的技术。
今天记录下,基于docker的容器登录技术。
通常情况下,我们想看看运行中的docker容器的状态,尤其是想看看容器内部的应用配置,比如tomcat的配置信息,该怎么操作呢?当然了,你会说,直接docker inspect containerId,找到workdir,或者配置文件路径,然后docker cp从容器中拷贝到宿主机上。这些都是处理静态问题的办法,但是能否直接登录到容器上呢?
答案是有的,比较docker容器如此优秀出色。
准备工作,先启动一个docker容器,在后台运行,方便讲解后面的操作方法。
1.查看当前有些什么镜像。

2. 然后启动一个
以后台的方式启动tomcat:9.0.2,容器主机名login,将宿主机的9999端口映射到容器的8080上,容器的名称logindocker。
[root@tkwms-web wmsuser]# docker run -it --name logindocker -h login -p : tomcat:9.0. /bin/bash
3.查看启动后的容器信息

有好几种办法,可以直接连接上运行中的docker容器。下面就说常用的4种吧:
1. docker attach <ContainerID>

A. 登录后,就直接看到类似登录主机的感觉。然后,做什么操作,都可以进行了。另外,这里有一个问题需要注意,那就是如何退出docker attach连上的容器呢?是不是个问题?直接ctrl+c,肯定是不行的,因为有可能会导致容器挂掉, exit呢?也是会导致容器死掉的。有办法吗?答案是有的。直接在登录上的容器命令行下输入ctrl+p+q,就可以安全退出了。

B. 存在的问题:多人同时attach到同一个容器的时候,大家看到的是相同的内容,其中一个人卡顿,其他人都卡住,也就是相当于是一个人操作(有一个好处哟,就是不同地方的工作协调时,一个人操作,另外一个人可以看到对方在操作啥,就和看直播似的),此模式用于测试环境可以,生产环境不建议使用。
2. docker exec
该命令的帮助文档:
[root@tkwms-web wmsuser]# docker exec --help Usage: docker exec [OPTIONS] CONTAINER COMMAND [ARG...] Run a command in a running container Options:
-d, --detach Detached mode: run command in the background
--detach-keys string Override the key sequence for detaching a container
-e, --env list Set environment variables
-i, --interactive Keep STDIN open even if not attached
--privileged Give extended privileges to the command
-t, --tty Allocate a pseudo-TTY
-u, --user string Username or UID (format: <name|uid>[:<group|gid>])
-w, --workdir string Working directory inside the container
下面看一个案例:
[root@tkwms-web wmsuser]# docker exec -it 8c9dc1aaccad /bin/bash
A. 退出指令可以是exit,也可以是ctrl+p+q
B. 效果和docker attach类似。但是不存在docker attach的安全问题。
3. ssh方式
这里需要说明的是,运行的容器里面要有sshd服务,只有这样,才可以在远程的ssh客户端能够登陆上去。和普通的ssh使用方式一样。
4. nsenter命令方式
A. 这个nsenter是第三方的应用,需要自己下载安装。 wget https://www.kernel.org/pub/linux/utils/util-linux/v2.24/util-linux-2.24.tar.gz。 如何安装,就不说了,解压后自己一看就知道。
B. 获取要登陆的容器的主进程PID docker inspect -f {{.State.PID}} containerID
[root@tkwms-web util-linux-2.24]# docker inspect -f {{.State.Pid}} 886f31e4d385
C. 然后按照下面的指令进行登陆运行的容器
nsenter --target --mount --uts --ipc --net --pid
案例如下:
[root@tkwms-web ~]# nsenter --target --mount --uts --ipc --net --pid
mesg: ttyname failed: No such file or directory
root@login:/# ls
bin boot dev docker-java-home etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var
root@login:/#
综上所述,建议使用docker exec指令,最简单。
docker登录运行中的容器的4方案的更多相关文章
- Docker给运行中的容器添加映射端口
方法一: 1.获得容器IP将container_name 换成实际环境中的容器名docker inspect `container_name` | grep IPAddress 2. iptables ...
- Docker 给运行中的容器添加映射端口
方法1 1.获得容器IP 将container_name 换成实际环境中的容器名 docker inspect `container_name` | grep IPAddress 2. iptable ...
- docker 笔记--运行中的容器如何添加端口映射
解决: iptables -t nat -A DOCKER -p tcp --dport ${YOURPORT_1} -j DNAT --to-destination ${CONTAINERIP}:$ ...
- Docker学习笔记 - 在运行中的容器内启动新进程
docker psdoker top dc1 # 容器情况# 在运行中的容器内启动新进程docker exec [-d] [-i] [-t] 容器名 [command] [args]docker ex ...
- Docker查看运行中容器并进入容器
一.简述 Docker查看运行中容器并进入容器. 二.方法 $ sudo docker ps $ sudo docker exec -it 775c7c9ee1e1 /bin/bash 将黄色文字替换 ...
- Docker使用exec进入正在运行中的容器
docker在1.3.X版本之后提供了一个新的命令exec用于进入容器,这种方式相对简单一些,下面我们来看一下该命令的使用: docker exec --help 接下来我们使用该命令进入一个已经在运 ...
- Docker学习笔记之运行和管理容器
0x00 概述 容器是基于容器技术所建立和运行的轻量级应用运行环境,它是 Docker 封装和管理应用程序或微服务的“集装箱”.在 Docker 中,容器算是最核心的部分了,掌握容器的操作也是 Doc ...
- docker 给运行的容器映射本地端口
1.提交运行中的容器为一个镜像 (这样不会丢失在容器的各种操作) docker commit tang tang1 ### tang(运行容器名称) tang1(生成镜像名称) 2 ...
- docker实战系列之快速删除docker中的容器
1.停用全部运行中的容器 docker stop $(docker ps -q) 2.删除全部容器 docker rm $(docker ps -aq) 3.停用并删除容器 docker stop $ ...
随机推荐
- python非官方模块下载大全
网址: https://www.lfd.uci.edu/~gohlke/pythonlibs/ 包含了Ta-Lib和PyQt4等模块.
- [Java] int 转换为BigDecimal
new BigDecimal(int i); BigDecimal.parseBigDecimal(String.valueOf(int i));
- 继承ActionSupper类报错 --Struts2
如下图所示,继承ActionSupper类报错: 原因:缺少Struts2中JAR包,具体是:
- linux存储管理之mount挂载
Mount 挂载详解 ====================================================================================本节内容: ...
- You Dream. We Test.
https://www.keysight.com/us/en/home.html https://www.ixiacom.com/ IXIA 被收,才发现她
- android -------- MVP+DataBinding 的使用
今天来说说MVP+DataBinding 的使用 以一个登录案例来讲解 布局:(ConstraintLayout 作为根布局) <layout> <data> <vari ...
- 『TensorFlow』one_hot化标签
tf.one_hot(indices, depth):将目标序列转换成one_hot编码 tf.one_hot(indices, depth, on_value=None, off_value=Non ...
- MVC实战之排球计分(五)—— Controller的设计与实现
控制器 控制器接受用户的输入并调用模型和视图去完成用户的需求.所以当单击Web页面中的超链接和发送HTML表单时, 控制器本身不输出任何东西和做任何处理.它只是接收请求并决定调用哪个模型构件去处理请求 ...
- Pyhon中运算符的使用
1. a & b python中的&延续了C/C++的含义,表示位运算. 例如 3 & 4:3&5:6&7 3 & 4 = (011)2 & ( ...
- python -- while循环,格式化输出,运算符,初识编码
一.while循环 1.语法 while 条件: 循环体(结果) 如果条件为真,则直接执行结果),然后再次判断条件,知道条件为假,停止循环. while True: print('你是谁呢') 退 ...