如何使用nsnstextfield enterr 进入Docker容器

wx325 的BLOG
用户名:wx325
文章数:38
访问量:11418
注册日期:
阅读量:5863
阅读量:12276
阅读量:421142
阅读量:1109427
51CTO推荐博文
一、什么是Docker1、什么是DockerDocker是一个由GO语言写的程序运行的“容器”(Linux&containers,&LXCs);&
目前云服务的基石是操作系统级别的隔离,在同一台物理服务器上虚拟出多个主机。
Docker则实现了一种应用程序级别的隔离;&
它改变我们基本的开发、操作单元,由直接操作虚拟主机(VM),转换到操作程序运行的“容器”上来。
Docker是为开发者和系统管理员设计的,用来发布和运行分布式应用程序的一个开放性平台。Docker组成部分:Client
Server:如果docker服务停掉后,所有的docker容器就停掉了Docker三个组件:镜像:Image
容器:docker用容器来运行业务。从镜像创建一个实例
仓库:Reposity二、docker安装1、环境准备环境准备IP
192.168.56.11
linux-node1
注意:我这里使用的是centos7,如果是使用centos5或者centos6,需要升级操作系统内核,否则Docker的许多新功能都无法使用2、docker安装这里我们使用yum方式安装[root@linux-node1&~]#yum&install&docker&-y启动docker[root@linux-node1&~]#&systemctl&start&docker查看docker启动状态[root@linux-node1&~]#&ps&-ef|grep&docker
root&&&&&&&5340&&&&&&1&&6&12:14&?&&&&&&&&00:00:00&/usr/bin/docker-current&daemon&--exec-opt&native.cgroupdriver=systemd&--selinux-enabled&--log-driver=journald
root&&&&&&&5454&&&:14&pts/0&&&&00:00:00&grep&--color=auto&do
[root@linux-node1&~]#&systemctl&status&docker
●&docker.service&-&Docker&Application&Container&Engine
&&&Loaded:&loaded&(/usr/lib/systemd/system/docker.&&vendor&preset:&disabled)
&&&Active:&active&(running)&since&Wed&&12:14:15&CST;&2min&47s&ago
&&&&&Docs:&
&Main&PID:&5340&(docker-current)
&&&CGroup:&/system.slice/docker.service
&&&&&&&&&&&└─5340&/usr/bin/docker-current&daemon&--exec-opt&native.cgroupdriver=systemd&--selinux-enabled&--log-driver=journald
Sep&14&12:14:14&linux-node1&docker-current[5340]:&time="T12:14:14.:00"&level=info&msg="Firewalld&running:&false"
Sep&14&12:14:15&linux-node1&docker-current[5340]:&time="T12:14:15.:00"&level=info&msg="Default&bridge&(docker...ddress"
Sep&14&12:14:15&linux-node1&docker-current[5340]:&time="T12:14:15.:00"&level=info&msg="Loading&containers:&start."
Sep&14&12:14:15&linux-node1&docker-current[5340]:&...time="T12:14:15.:00"&level=error&msg="Error&unmounting&c...ounted"
Sep&14&12:14:15&linux-node1&docker-current[5340]:&time="T12:14:15.:00"&level=error&msg="Error&unmounting&cont...ounted"
Sep&14&12:14:15&linux-node1&docker-current[5340]:&time="T12:14:15.:00"&level=info&msg="Loading&containers:&done."
Sep&14&12:14:15&linux-node1&docker-current[5340]:&time="T12:14:15.:00"&level=info&msg="Daemon&has&completed&i...zation"
Sep&14&12:14:15&linux-node1&docker-current[5340]:&time="T12:14:15.:00"&level=info&msg="Docker&daemon"&commit=...=1.10.3
Sep&14&12:14:15&linux-node1&systemd[1]:&Started&Docker&Application&Container&Engine.
Sep&14&12:14:15&linux-node1&docker-current[5340]:&time="T12:14:15.:00"&level=info&msg="API&listen&on&/var/run...r.sock"
Hint:&Some&lines&were&ellipsized,&use&-l&to&show&in&full.
可以看到docker已经正常启动3、docker镜像对docker镜像的操作包括搜索镜像、导入镜像、导出镜像、删除镜像搜索镜像[root@linux-node1&~]#&docker&search&centos
INDEX&&&&&&&NAME&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&DESCRIPTION&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&STARS&&&&&OFFICIAL&&&AUTOMATED
docker.io&&&docker.io/centos&&&&&&&&&&&&&&&&&&&&&&&&&&The&official&build&of&CentOS.&&&&&&&&&&&&&&&&&&&2645&&&&&&[OK]&&&&&&&
docker.io&&&docker.io/ansible/centos7-ansible&&&&&&&&&Ansible&on&Centos7&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&85&&&&&&&&&&&&&&&&&&&[OK]
docker.io&&&docker.io/jdeathe/centos-ssh&&&&&&&&&&&&&&CentOS-6&6.8&x86_64&/&CentOS-7&7.2.1511&x8...&&&33&&&&&&&&&&&&&&&&&&&[OK]
docker.io&&&docker.io/jdeathe/centos-ssh-apache-php&&&CentOS-6&6.8&x86_64&/&Apache&/&PHP&/&PHP&M...&&&19&&&&&&&&&&&&&&&&&&&[OK]
docker.io&&&docker.io/nimmis/java-centos&&&&&&&&&&&&&&This&is&docker&images&of&CentOS&7&with&dif...&&&15&&&&&&&&&&&&&&&&&&&[OK]
docker.io&&&docker.io/million12/centos-supervisor&&&&&Base&CentOS-7&with&supervisord&launcher,&h...&&&12&&&&&&&&&&&&&&&&&&&[OK]
docker.io&&&docker.io/jdeathe/centos-ssh-mysql&&&&&&&&CentOS-6&6.8&x86_64&/&MySQL.&&&&&&&&&&&&&&&&&&&&9&&&&&&&&&&&&&&&&&&&&[OK]
docker.io&&&docker.io/torusware/speedus-centos&&&&&&&&Always&updated&official&CentOS&docker&imag...&&&8&&&&&&&&&&&&&&&&&&&&[OK]
docker.io&&&docker.io/centos/mariadb55-centos7&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&3&&&&&&&&&&&&&&&&&&&&[OK]
docker.io&&&docker.io/nathonfowlie/centos-jre&&&&&&&&&Latest&CentOS&image&with&the&JRE&pre-insta...&&&3&&&&&&&&&&&&&&&&&&&&[OK]
docker.io&&&docker.io/blacklabelops/centos&&&&&&&&&&&&CentOS&Base&Image!&Built&and&Updates&Daily!&&&&&1&&&&&&&&&&&&&&&&&&&&[OK]
docker.io&&&docker.io/darksheer/centos&&&&&&&&&&&&&&&&Base&Centos&Image&--&Updated&hourly&&&&&&&&&&&&&1&&&&&&&&&&&&&&&&&&&&[OK]
docker.io&&&docker.io/harisekhon/centos-java&&&&&&&&&&Java&on&CentOS&(OpenJDK,&tags&jre/jdk7-8)&&&&&&&1&&&&&&&&&&&&&&&&&&&&[OK]
docker.io&&&docker.io/timhughes/centos&&&&&&&&&&&&&&&&Centos&with&systemd&installed&and&running&&&&&&&1&&&&&&&&&&&&&&&&&&&&[OK]
docker.io&&&docker.io/aguamala/centos&&&&&&&&&&&&&&&&&CentOS&base&image&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&0&&&&&&&&&&&&&&&&&&&&[OK]
docker.io&&&docker.io/dmglab/centos&&&&&&&&&&&&&&&&&&&CentOS&with&some&extras&-&This&is&for&the&...&&&0&&&&&&&&&&&&&&&&&&&&[OK]
docker.io&&&docker.io/grayzone/centos&&&&&&&&&&&&&&&&&auto&build&for&centos.&&&&&&&&&&&&&&&&&&&&&&&&&&0&&&&&&&&&&&&&&&&&&&&[OK]
docker.io&&&docker.io/grossws/centos&&&&&&&&&&&&&&&&&&CentOS&6&and&7&base&images&with&gosu&and&l...&&&0&&&&&&&&&&&&&&&&&&&&[OK]
docker.io&&&docker.io/harisekhon/centos-scala&&&&&&&&&Scala&+&CentOS&(OpenJDK&tags&2.10-jre7&-&2...&&&0&&&&&&&&&&&&&&&&&&&&[OK]
docker.io&&&docker.io/januswel/centos&&&&&&&&&&&&&&&&&yum&update-ed&CentOS&image&&&&&&&&&&&&&&&&&&&&&&0&&&&&&&&&&&&&&&&&&&&[OK]
docker.io&&&docker.io/jsmigel/centos-epel&&&&&&&&&&&&&Docker&base&image&of&CentOS&w/&EPEL&installed&&&0&&&&&&&&&&&&&&&&&&&&[OK]
docker.io&&&docker.io/kz8s/centos&&&&&&&&&&&&&&&&&&&&&Official&CentOS&plus&epel-release&&&&&&&&&&&&&&&0&&&&&&&&&&&&&&&&&&&&[OK]
docker.io&&&docker.io/repositoryjp/centos&&&&&&&&&&&&&Docker&Image&for&CentOS.&&&&&&&&&&&&&&&&&&&&&&&&0&&&&&&&&&&&&&&&&&&&&[OK]
docker.io&&&docker.io/sgfinans/docker-centos&&&&&&&&&&CentOS&with&a&running&sshd&and&Docker&&&&&&&&&&&0&&&&&&&&&&&&&&&&&&&&[OK]
docker.io&&&docker.io/ustclug/centos&&&&&&&&&&&&&&&&&&&USTC&centos&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&0&&&&&&&&&&&&&&&&&&&&[OK]导入镜像[root@linux-node1&~]#&docker&load&Cinput&centos.tar查看镜像[root@linux-node1&~]#&docker&images导出镜像[root@linux-node1&~]#&docker&pull&centos&#先拉取镜像
[root@linux-node1&~]#&docker&save&-o&centos.tar&centos&&#导出删除镜像[root@linux-node1&~]#&docker&rmi&镜像ID三、运行docker容器运行Docker容器[root@linux-node1&~]#&docker&run&centos&/bin/echo&‘Hello&world’&&
#centos是镜像的名称,如果有参数,参数写在镜像名称前面查看容器[root@linux-node1&~]#&docker&ps&-a
CONTAINER&ID&&&&&&&&IMAGE&&&&&&&&&&&&&&&COMMAND&&&&&&&&&&&&&&&&&&CREATED&&&&&&&&&&&&&&STATUS&&&&&&&&&&&&&&&&&&&&&&&&&&PORTS&&&&&&&&&&&&&&&NAMES
d6e7283abf0a&&&&&&&&centos&&&&&&&&&&&&&&"/bin/bash"&&&&&&&&&&&&&&About&a&minute&ago&&&Exited&(0)&About&a&minute&ago&&&&&&&&&&&&&&&&&&&&&&&romantic_kilby
7ada4ff8323a&&&&&&&&nginx&&&&&&&&&&&&&&&"nginx&-g&'daemon&off"&&&13&days&ago&&&&&&&&&&Exited&(137)&4&days&ago&&&&&&&&&80/tcp,&443/tcp&&&&&condescending_franklin
cdc1&&&&&&&&centos&&&&&&&&&&&&&&"/bin/bash"&&&&&&&&&&&&&&13&days&ago&&&&&&&&&&Exited&(137)&4&days&ago&&&&&&&&&&&&&&&&&&&&&&&&&&&&&mydocker
25&&&&&&&&centos&&&&&&&&&&&&&&"/bin/echo&'hello&wor"&&&13&days&ago&&&&&&&&&&Exited&(0)&13&days&ago&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&small_darwin
注意:查看docker运行情况时,加上-a参数,查看所有运行和不运行的容器运行容器时给Docker容器命名[root@linux-node1&~]#&docker&run&--name&mydocker&-t&-i&centos&/bin/bash
-t让docker分配一个伪终端,-i打开标准输入,centos是镜像的名称
如果最后一个参数不是命令,那么最后的永远是镜像的名称。
即使在系统上没有安装docker,这个命令也可以执行,执行后docker会pull下来一个镜像然后启动。
进入Docker容器后查看系统内核版本
[root@cdc1&/]#&uname&-a
Linux&cdc1&3.10.0-327.18.2.el7.x86_64&#1&SMP&Thu&May&12&11:03:55&UTC&&x86_64&x86_64&GNU/Linux
[root@cdc1&/]#&ps&aux
USER&&&&&&&&PID&%CPU&%MEM&&&&VSZ&&&RSS&TTY&&&&&&STAT&START&&&TIME&COMMAND
root&&&&&&&&&&1&&0.3&&0.0&&1&?&&&&&&&&Ss&&&12:03&&&0:00&/bin/bash
root&&&&&&&&&17&&0.0&&0.0&&4&?&&&&&&&&R+&&&12:04&&&0:00&ps&aux
[root@cdc1&/]#
此时进入了docker里面,但是它不是一个虚拟机。因为正常情况下,操作系统进程号为1的是/usr/lib/systemd/systemd
[root@linux-node1&~]#&ps&aux
USER&&&&&&&&PID&%CPU&%MEM&&&&VSZ&&&RSS&TTY&&&&&&STAT&START&&&TIME&COMMAND
root&&&&&&&&&&1&&0.2&&0.1&40&?&&&&&&&&Ss&&&10:16&&&0:05&/usr/lib/systemd/systemd&--switched-root&--system&--deserialize&21
Docker做的是进程的隔离
虚拟机做的是操作系统的隔离查看cpuinfo时,看到的是物理机的信息。[root@cdc1&/]#&cat&/proc/cpuinfo&&&&
processor :&0
vendor_id :&GenuineIntel
cpu&family :&6
model&name :&Intel(R)&Core(TM)&i5-4200U&CPU&@&1.60GHz
stepping :&1
microcode :&0x1d
cache&size :&3072&KB
physical&id :&0
siblings :&1
cpu&cores :&1
initial&apicid :&0
fpu_exception :&yes
cpuid&level :&13
:&fpu&vme&de&pse&tsc&msr&pae&mce&cx8&apic&sep&mtrr&pge&mca&cmov&pat&pse36&clflush&dts&mmx&fxsr&sse&sse2&ss&syscall&nx&pdpe1gb&rdtscp&lm&constant_tsc&arch_perfmon&pebs&bts&nopl&xtopology&tsc_reliable&nonstop_tsc&aperfmperf&eagerfpu&pni&pclmulqdq&vmx&ssse3&fma&cx16&pcid&sse4_1&sse4_2&x2apic&movbe&popcnt&tsc_deadline_timer&xsave&avx&f16c&rdrand&hypervisor&lahf_lm&abm&ida&arat&epb&pln&pts&dtherm&tpr_shadow&vnmi&ept&vpid&fsgsbase&tsc_adjust&bmi1&avx2&smep&bmi2&invpcid&xsaveopt
bogomips :&4589.37
clflush&size :&64
cache_alignment :&64
address&sizes :&42&bits&physical,&48&bits&virtual
power&management:
processor :&1
vendor_id :&GenuineIntel
cpu&family :&6
model&name :&Intel(R)&Core(TM)&i5-4200U&CPU&@&1.60GHz
stepping :&1
microcode :&0x1d
cache&size :&3072&KB
physical&id :&2
siblings :&1
cpu&cores :&1
initial&apicid :&2
fpu_exception :&yes
cpuid&level :&13
:&fpu&vme&de&pse&tsc&msr&pae&mce&cx8&apic&sep&mtrr&pge&mca&cmov&pat&pse36&clflush&dts&mmx&fxsr&sse&sse2&ss&syscall&nx&pdpe1gb&rdtscp&lm&constant_tsc&arch_perfmon&pebs&bts&nopl&xtopology&tsc_reliable&nonstop_tsc&aperfmperf&eagerfpu&pni&pclmulqdq&vmx&ssse3&fma&cx16&pcid&sse4_1&sse4_2&x2apic&movbe&popcnt&tsc_deadline_timer&xsave&avx&f16c&rdrand&hypervisor&lahf_lm&abm&ida&arat&epb&pln&pts&dtherm&tpr_shadow&vnmi&ept&vpid&fsgsbase&tsc_adjust&bmi1&avx2&smep&bmi2&invpcid&xsaveopt
bogomips :&4589.37
clflush&size :&64
cache_alignment :&64
address&sizes :&42&bits&physical,&48&bits&virtual
power&management:
processor :&2
vendor_id :&GenuineIntel
cpu&family :&6
model&name :&Intel(R)&Core(TM)&i5-4200U&CPU&@&1.60GHz
stepping :&1
microcode :&0x1d
cache&size :&3072&KB
physical&id :&4
siblings :&1
cpu&cores :&1
initial&apicid :&4
fpu_exception :&yes
cpuid&level :&13
:&fpu&vme&de&pse&tsc&msr&pae&mce&cx8&apic&sep&mtrr&pge&mca&cmov&pat&pse36&clflush&dts&mmx&fxsr&sse&sse2&ss&syscall&nx&pdpe1gb&rdtscp&lm&constant_tsc&arch_perfmon&pebs&bts&nopl&xtopology&tsc_reliable&nonstop_tsc&aperfmperf&eagerfpu&pni&pclmulqdq&vmx&ssse3&fma&cx16&pcid&sse4_1&sse4_2&x2apic&movbe&popcnt&tsc_deadline_timer&xsave&avx&f16c&rdrand&hypervisor&lahf_lm&abm&ida&arat&epb&pln&pts&dtherm&tpr_shadow&vnmi&ept&vpid&fsgsbase&tsc_adjust&bmi1&avx2&smep&bmi2&invpcid&xsaveopt
bogomips :&4589.37
clflush&size :&64
cache_alignment :&64
address&sizes :&42&bits&physical,&48&bits&virtual
power&management:
processor :&3
vendor_id :&GenuineIntel
cpu&family :&6
model&name :&Intel(R)&Core(TM)&i5-4200U&CPU&@&1.60GHz
stepping :&1
microcode :&0x1d
cache&size :&3072&KB
physical&id :&6
siblings :&1
cpu&cores :&1
initial&apicid :&6
fpu_exception :&yes
cpuid&level :&13
:&fpu&vme&de&pse&tsc&msr&pae&mce&cx8&apic&sep&mtrr&pge&mca&cmov&pat&pse36&clflush&dts&mmx&fxsr&sse&sse2&ss&syscall&nx&pdpe1gb&rdtscp&lm&constant_tsc&arch_perfmon&pebs&bts&nopl&xtopology&tsc_reliable&nonstop_tsc&aperfmperf&eagerfpu&pni&pclmulqdq&vmx&ssse3&fma&cx16&pcid&sse4_1&sse4_2&x2apic&movbe&popcnt&tsc_deadline_timer&xsave&avx&f16c&rdrand&hypervisor&lahf_lm&abm&ida&arat&epb&pln&pts&dtherm&tpr_shadow&vnmi&ept&vpid&fsgsbase&tsc_adjust&bmi1&avx2&smep&bmi2&invpcid&xsaveopt
bogomips :&4589.37
clflush&size :&64
cache_alignment :&64
address&sizes :&42&bits&physical,&48&bits&virtual
power&management:四、进入正在运行的docker容器1、使用docker attach方式进入[root@linux-node1&~]#&docker&attach&mydocker
使用docker&attach命令有个缺点就是操作是同步的,一个用户操作时,另一个用户可以看到操作。
[root@cdc1&/]#&ps&aux
USER&&&&&&&&PID&%CPU&%MEM&&&&VSZ&&&RSS&TTY&&&&&&STAT&START&&&TIME&COMMAND
root&&&&&&&&&&1&&0.0&&0.0&&1&?&&&&&&&&Ss&&&12:09&&&0:00&/bin/bash
root&&&&&&&&&16&&0.0&&0.0&&4&?&&&&&&&&R+&&&12:15&&&0:00&ps&aux[root@linux-node1&~]#&docker&ps&-a
CONTAINER&ID&&&&&&&&IMAGE&&&&&&&&&&&&&&&COMMAND&&&&&&&&&&&&&&&&&&CREATED&&&&&&&&&&&&&STATUS&&&&&&&&&&&&&&&&&&&&&&PORTS&&&&&&&&&&&&&&&NAMES
cdc1&&&&&&&&centos&&&&&&&&&&&&&&"/bin/bash"&&&&&&&&&&&&&&12&minutes&ago&&&&&&Exited&(0)&7&seconds&ago&&&&&&&&&&&&&&&&&&&&&&&&mydocker
25&&&&&&&&centos&&&&&&&&&&&&&&"/bin/echo&'hello&wor"&&&15&minutes&ago&&&&&&Exited&(0)&15&minutes&ago&&&&&&&&&&&&&&&&&&&&&&&small_darwin2、使用nsenter方式生产环境进入docker,使用nsenter;这个工具集成在util-linux内如果这个工具没有安装,可以使用yum install -y util-linux进行安装使用nsenter进入docker容器之前,必须先获取Docker的PID[root@linux-node1&~]#&docker&inspect&-f&"{{&.State.Pid&}}"&mydocker
如果获取的值是0,证明docker容器没有启动。使用nsenter进入容器[root@linux-node1&/usr/local/src]#nsenter&-t&3989&-m&-u&-i&-n&Cp
[root@cdc1&/]#&ps&-ef
UID&&&&&&&&&PID&&&PPID&&C&STIME&TTY&&&&&&&&&&TIME&CMD
root&&&&&&&&&&1&&&&&&0&&0&12:20&?&&&&&&&&00:00:00&/bin/bash
root&&&&&&&&&16&&&&&&0&&0&12:24&?&&&&&&&&00:00:00&-bash
root&&&&&&&&&38&&&&&16&&0&12:24&?&&&&&&&&00:00:00&ps&-ef
[root@cdc1&/]#
/bin/bash进程执行的第一个进程
-bash是使用nsenter命令时创建的进程。
如果退出后,/bin/bash仍然运行。
执行docker&ps&-a可以查看状态
[root@linux-node1&/usr/local/src]#&docker&ps&-a
CONTAINER&ID&&&&&&&&IMAGE&&&&&&&&&&&&&&&COMMAND&&&&&&&&&&&&&&&&&&CREATED&&&&&&&&&&&&&STATUS&&&&&&&&&&&&&&&&&&&&&&PORTS&&&&&&&&&&&&&&&NAMES
cdc1&&&&&&&&centos&&&&&&&&&&&&&&"/bin/bash"&&&&&&&&&&&&&&21&minutes&ago&&&&&&Up&4&minutes&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&mydocker
25&&&&&&&&centos&&&&&&&&&&&&&&"/bin/echo&'hello&wor"&&&24&minutes&ago&&&&&&Exited&(0)&24&minutes&ago&&&&&&&&&&&&&&&&&&&&&&&small_darwin
[root@linux-node1&/usr/local/src]#我们可以写一个脚本,把获取docker的PID,进入容器的操作都放入脚本内,这样就不用每次都敲很多命令[root@linux-node1&~]#&cat&docker_in.sh&
#!/bin/bash
docker_in(){
&&&&NAME_ID=$1
&&&&PID=$(docker&inspect&-f&"{{&.State.Pid&}}"&$NAME_ID)
&&&&nsenter&-t&$PID&-m&-u&-i&-n&-p
docker_in&$1&&#给docker_in传递一个参数进去例如:[root@linux-node1&~]#&./docker_in.sh&mydocker
[root@cdc1&/]#&exit
[root@linux-node1&~]#&docker&ps
CONTAINER&ID&&&&&&&&IMAGE&&&&&&&&&&&&&&&COMMAND&&&&&&&&&&&&&CREATED&&&&&&&&&&&&&STATUS&&&&&&&&&&&&&&PORTS&&&&&&&&&&&&&&&NAMES
cdc1&&&&&&&&centos&&&&&&&&&&&&&&"/bin/bash"&&&&&&&&&26&minutes&ago&&&&&&Up&9&minutes&&&&&&&&&&&&&&&&&&&&&&&&&&&&mydocker3、使用docker exec使用docker exec时,需加上-it参数[root@linux-node1&~]#&docker&exec&-it&mydocker&/bin/bash
[root@cdc1&/]#&ps&aux
USER&&&&&&&&PID&%CPU&%MEM&&&&VSZ&&&RSS&TTY&&&&&&STAT&START&&&TIME&COMMAND
root&&&&&&&&&&1&&0.0&&0.0&&1&?&&&&&&&&Ss+&&03:36&&&0:00&/bin/bash
root&&&&&&&&&23&&2.7&&0.0&&1&?&&&&&&&&Ss&&&03:41&&&0:00&/bin/bash
root&&&&&&&&&38&&0.0&&0.0&&4&?&&&&&&&&R+&&&03:41&&&0:00&ps&aux实际生产中,我们可能不需要进入容器,执行一个命令后就退出,可以使用如下方式:[root@linux-node1&~]#&docker&exec&mydocker&whoami
root本文出自 “” 博客,请务必保留此出处
了这篇文章
类别:┆阅读(0)┆评论(0)2750人阅读
linux(5)
登录容器的方式&&&&&&&&&&&&&&&&&&&&&&&
ssh登录&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
第三方工具(nsenter、nsinit)&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
docker提供的工具(attach、exec)
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
优点&&&&&&&&&&&&&&&&&&&&
符合平时登录服务器习惯,不用额外学习
使用方便快捷
使用方便快捷&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
需要学习第三方工具使用规则
docker宿主机root权限
使用attach登录容器,exit退出容器
docker宿主机root权限
适用范围&&&&&&&&&&&&&&&&&&&&&&
适用docker宿主机登录至容器内部
远程登录该容器
适用docker宿主机登录至容器内部
适用docker宿主机登录至容器内部
使用方法:ssh用户@IP地址 -p 端口
一般ssh登录走22端口,但是在docker中bridge网络模式使用NAT做端口映射,端口需要特殊标注
适用范围:docker宿主机内部登录容器,外部终端直接登录容器&
优点:符合管理员、开发者登录服务器的习惯,不需要进行额外的学习&
缺点:1.秘钥管理
如果将秘钥写到镜像中,当需要更新秘钥时需要重新制作镜像,部署,重启容器,虽然这个步骤繁琐,但是个人认为还是安全的。如果将秘钥写到卷中,首先要保证该容器没有这个卷的写权限,否则存在秘钥被篡改的风险。
2.ssh升级或打补丁
ssh有漏洞或者版本升级时,需要对每一个容器进行打补丁或者升级操作
&docker attach
& && &&&&&使用方法:docker attach&&[container name]
& && &&&&&适用范围:docker宿主机内部登录容器&
& && &&&&&优点:快捷方便
& & &&&&& 缺点:<span style="color:#.exit后直接退出该container
& & & &&&&&&&&&&
2.多屏同步 这相当于同一时间最多只能有一个终端连接容器
docker exec
使用方法:docker exec -it [container name] [command]
适用范围:docker宿主机内部登录容器
优点:快捷方便
缺点:外部终端无法使用这种方法登录容器
使用参数介绍:
-i, --interactive&&&&&&&&&&&&&&&Keep
STDIN open even if not attached&————交互&
-t, --tty &&&&&&&&&&&&&&&&&&&&&&&Allocate
a pseudo-TTY————分配伪终端
一般情况会使用-it这个组合命令,如果单用也只能单独使用-i命令&
-i 参数不会产生伪终端,但是会有正确的返回
& && &&&&&使用-it时,则和我们平常操作console界面类&#20284;。而且也不会像attach方式因为退出,导致整个容器退出。这种方式可以替代ssh或者nsenter、nsinit方式,在容器内进行操作。
nsenter工具
&&&&&&&&&& nsenter工具的安装:
&&&&&&&&&& wget&&
&&&&&&&&&& tar -xzvf util-linux-2.28.tar.gz&&&&&&&&&&
&&&&&&&&&& cd util-linux-2.28
&&&&&&&&& ./configure --without-ncurses
&&&&&&&&& make nsenter
&&&&&&&&& cp nsenter /usr/local/bin
&&&&&&&&& 安装完成后,使用nsenter —help 命令查看,可以看到使用方法及参数则证明安装成功。
&&&&&&&&&&&&&&使用nsenter 命令登录docker 容器
&&&&&&&&&&&& 在使用nsenter登录docker 容器时,一般使用前6个参数(我看别人都这么写的,想了想原因,可能使用前6个参数就可以涵盖网络,磁盘,进程管理操作系统基本的信息,我尝试只使用其中一个或几个参数登录容器,成功了但是操作系统功能使用上受限制,比如无法使用网络配置功能等)。
&&相关文章推荐
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:9619次
排名:千里之外
原创:23篇
(2)(4)(11)(1)(3)(3)安装nsenter
docker run -v /usr/local/bin:/target jpetazzo/nsenter
solumuser@ubuntu14044:~/devstack$ docker run -v /usr/local/bin:/target jpetazzo/nsenter
Unable to find image &#39;jpetazzo/nsenter:latest&#39; locally
latest: Pulling from jpetazzo/nsenter
0e0f419fdc20: Pull complete
91a0e4c51245: Pull complete
661a: Pull complete
0e11d298ab23: Pull complete
06fbbd71fa48: Pull complete
f5e6: Pull complete
a: Pull complete
f11e19d48f83: Pull complete
bff1c547022e: Pull complete
51a6e49096e7: Pull complete
311ff5fb25c1: Pull complete
2fe: Pull complete
e7b0665269ca: Pull complete
307e5c0ca25c: Pull complete
dc8: Pull complete
e28b87694a35: Pull complete
e3eb825e4e57: Pull complete
1: Pull complete
a2bd5169402e: Pull complete
3b642f673420: Pull complete
Digest: sha256:8c35ff35cfc28ede0f5c76fb
Status: Downloaded newer image for jpetazzo/nsenter:latest
Installing nsenter to /target
Installing docker-enter to /target
Installing importenv to /target
先计算容器的PID:
PID=$(docker inspect --format {{.State.Pid}} &container_name_or_ID&)
solumuser@ubuntu14044:~/devstack$ docker ps
CONTAINER ID
98b7accec-java_app--ca2e0fcd
&/bin/bash -c &#39;sourc
16 hours ago
Up 16 hours
nova-148a593f-d75c-4ac8-8cad-95c2ee7ffefd
solumuser@ubuntu14044:~/devstack$ PID=$(docker inspect --format {{.State.Pid}} nova-148a593f-d75c-4ac8-8cad-95c2ee7ffefd )
进入容器:
nsenter --target $PID --mount --uts --ipc --net --pid
solumuser@ubuntu14044:~/devstack$ sudo nsenter --target $PID --mount --uts --ipc --net --pid
root@instance-0000000e:/# pwd
root@instance-0000000e:/# ls
&&相关文章推荐
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:1662次
排名:千里之外

我要回帖

更多关于 nsenter 的文章

 

随机推荐