首页 技术 正文
技术 2022年11月21日
0 收藏 801 点赞 3,419 浏览 2209 个字

目前容器云非常的成熟,也有很多的使用案例,可以说不是什么高大上的东西了,可以说整个云计算也不是什么奢侈品,而是基础设施。但是如何使用,就成了必须的技术。

今天记录下,基于docker的容器登录技术。

通常情况下,我们想看看运行中的docker容器的状态,尤其是想看看容器内部的应用配置,比如tomcat的配置信息,该怎么操作呢?当然了,你会说,直接docker inspect containerId,找到workdir,或者配置文件路径,然后docker cp从容器中拷贝到宿主机上。这些都是处理静态问题的办法,但是能否直接登录到容器上呢?

答案是有的,比较docker容器如此优秀出色。

准备工作,先启动一个docker容器,在后台运行,方便讲解后面的操作方法。

1.查看当前有些什么镜像。

docker登录运行中的容器的4方案

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方案

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

1. docker attach <ContainerID>

docker登录运行中的容器的4方案

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

docker登录运行中的容器的4方案
B. 存在的问题:多人同时attach到同一个容器的时候,大家看到的是相同的内容,其中一个人卡顿,其他人都卡住,也就是相当于是一个人操作(有一个好处哟,就是不同地方的工作协调时,一个人操作,另外一个人可以看到对方在操作啥,就和看直播似的),此模式用于测试环境可以,生产环境不建议使用。

2. docker exec 

该命令的帮助文档:

[root@tkwms-web wmsuser]# docker exec --helpUsage:  docker exec [OPTIONS] CONTAINER COMMAND [ARG...]Run a command in a running containerOptions:
-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指令,最简单。

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:8,997
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,511
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,356
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,139
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,770
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,848