进入docker容器并执行命令的的3中方法

  1. docker exec
     
  2. nsenter
     
  3. docker attach "container"

建议使用nsenter, exec有时候会有问题。 attach执行完之后会自动退出

exec需要在运行中的容器中执行:

nsenter需要安装,默认最小安装里面有,yum -y install util-linux

 

attach需要是启动的容器,退出的需要使用start先启动- docker
start CONTAINER
(使用attach进入容器后退出后容器会退出)

[root@docker01 ~]# docker --help|grep exec

exec        Run a command in a running container

[root@docker01 ~]# docker ps

CONTAINER ID       
IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES

9218c822d3a5       
docker.io/centos   
"/bin/bash"             
11 hours ago        Up 11 hours                             cent03

e4d5b979923b       
docker.io/centos   
"bash"                  
21 hours ago        Up 11
hours                             cent02

fe7ab7cd9ec0       
bash               
"docker-entrypoint..."  
21 hours ago        Up 12 hours                             cent01

216dc5feb799        8b89e48b5f15       
"/bin/bash"              21 hours ago        Up 12 hours        
80/tcp              nginx02

[root@docker01 ~]# docker exec cent01 route

Kernel IP routing table

Destination    
Gateway         Genmask         Flags Metric Ref    Use Iface

default        
172.17.0.1      0.0.0.0         UG   
0      0        0 eth0

172.17.0.0     
*               255.255.0.0     U    
0      0        0 eth0

[root@docker01 ~]#

[root@docker01 scripts]# rpm -ql util-linux|grep
nsenter

/usr/bin/nsenter

/usr/share/bash-completion/completions/nsenter

/usr/share/man/man1/nsenter.1.gz

[root@docker01 scripts]# rpm -ql util-linux|grep
nsenter

exec直接进入bash的方法:

[root@docker01 work]# docker exec -it cent02
/bin/bash

[root@e4d5b979923b /]# cat /etc/hosts

127.0.0.1      
localhost

::1    
localhost ip6-localhost ip6-loopback

fe00::0 ip6-localnet

ff00::0 ip6-mcastprefix

ff02::1 ip6-allnodes

ff02::2 ip6-allrouters

172.17.0.4     
e4d5b979923b

直接去下载了httpd的容器并启动80端口的httpd服务。

[root@docker01 scripts]# docker run -d -p 83:80
--name cent_80 httpd

Unable to find image 'httpd:latest' locally

Trying to pull repository docker.io/library/httpd ...

latest: Pulling from docker.io/library/httpd

d660b1f15b9b: Pull complete

aa1c79a2fa37: Pull complete

f5f6514c0aff: Pull complete

676d3dd26040: Pull complete

4fdddf845a1b: Pull complete

28ecdadc5f88: Pull complete

5d882098e42b: Pull complete

Digest:
sha256:2edbf09d0dbdf2a3e21e4cb52f3385ad916c01dc2528868bc3499111cc54e937

Status: Downloaded newer image for
docker.io/httpd:latest

c720d0aa41860f2d88cd652f395d52279f0a485b7852da5d7fce4627ac7ef816

[root@docker01 scripts]# curl 10.0.0.181:83

<html><body><h1>It works!</h1></body></html>

进入docker容器并执行命令的的3中方法的更多相关文章

  1. docker镜像、docker容器导入导出命令

    一.docker镜像导入导出命令 导出命令: docker save -o <保存路径> <镜像名称:标签> docker save -o ./test.tar test:la ...

  2. WORKDIR 指定工作目录 每一个 RUN 都是启动一个容器、执行命令、然后提交存储层文件变更

    WORKDIR 指定工作目录 格式为 WORKDIR <工作目录路径>. 使用 WORKDIR 指令可以来指定工作目录(或者称为当前目录),以后各层的当前目录就被改为指定的目录,如该目录不 ...

  3. docker 容器管理常用命令

    Docker 容器管理: docker create -it centos //这样可以创建一个容器,但该容器并没有启动: create Create a new container 创建一个容器: ...

  4. Docker容器技术-基础命令

    一.基础命令 1.运行一个镜像 [root@bogon ~]# docker run debian echo "Hello World" Unable to find image ...

  5. linux中docker容器安装vi命令详解

    在使用docker容器时,同时你docker里的系统正好是debian或ubuntu的时候,有时候里边没有安装vim,敲vim命令时提示说:vim: command not found,这个时候就需要 ...

  6. XP_CMDSHELL 执行命令添加 windows 用户的方法

    1. 之前看过不少文档 可以使用 xp_SQLCMD的命令来进行渗透处理, 今天因为公司的服务器又中毒了 自己学习了下. 2. 修改SQLSERVER的设置 远程登录数据库 sqlcmd -S 10. ...

  7. docker进入容器内部执行命令

    [root@bogon ~]# docker ps -l CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 38a2cae4c32f jenk ...

  8. docker 容器使用 systemctl 命令是报错

    看了许多解决方案,但是对于新手来说并不友好,不是特别清楚 报错内容: System has not been booted with systemd as init system (PID 1). C ...

  9. Docker容器操作中常用命令集合

    docker pull 从仓库获取所需要的镜像 docker images 显示本地已有的镜像. docker commit 提交更新后的副本. docker build 创建一个新的镜像 ADD 复 ...

随机推荐

  1. 简述raid0,raid1,raid5,raid10 的工作原理及特点

    RAID 0 支持1块盘到多块盘,容量是所有盘之和 RAID1 只支持2块盘,容量损失一块盘 RAID 5最少三块盘,不管硬盘数量多少,只损失一块容量 RAID 10最少4块盘,必须偶数硬盘,不管硬盘 ...

  2. .NET Memcached Client 扩展获取所有缓存Key

    .NET Memcached Client默认实现中并没有获取所有已经缓存Key的方法,但在业务中有时候需求中需要通过正则删除符合条件的缓存内容,所以就要通过读取已经缓存Key进行相关的匹配,然后删除 ...

  3. Java面向对象_静态代理模式

    概念:为其它对象提供一种代理以控制对这个对象的访问.代理模式说白了就是"真实对象"的代表,在访问对象时引入一定程度的间接性,因为这种间接性可以附加多种用途. public clas ...

  4. Docker创建Centos踩出来的坑

    屁话不多说,先来一遍正常的流程 1.下载centos镜像 # docker pull centos 2.运行容器,修改镜像 2.1 运行 # docker run -itd --name centos ...

  5. 2009年3月新浪PHP面试题及答案(一)

    1. echo count(“abc”); 输出什么? 答案:1 2. 用PHP代码写出显示客户端IP与服务器IP的代码. 答案:客户端 getenv(‘REMOTE_ADDR’); 服务器端 get ...

  6. jQuery 方法 属性

    Attribute:$("p").addClass(css中定义的样式类型); 给某个元素添加样式$("img").attr({src:"test.j ...

  7. 深入理解jvm jdk1,7(1)

    java 虚拟机管理的内存模型包含以下几个运行时数据区域: 程序计数器: 程序计数器是一块较小的内存空间,它可以看成当前线程执行的字节码的行号指示器.在虚拟机的概念模型里(仅是概念模型,各种虚拟机可能 ...

  8. hibernate自动建表技术_采用数据库反向生成技术

    1.首先使用oracle创建一个用户: 登陆sqlplus,并以sysdba登陆到数据库: 2.创建一个用户,并对此用户授予connect,resource两个角色的权限: 3.连接到hibernat ...

  9. 高德地图 获取sha1

    开发版本sha1 控制台输入 cd .android  回车 再输入   keytool -list -v -keystore debug.keystore 回车 输入密钥库口令:  andorid ...

  10. 免费的freedns实现动态域名和url转发

    路由器的固件是dd-wrt 到freedns.afraid.org上注册一个动态域名,如果默认的端口无法使用80,需要配置二级域名的url转发功能. 实测2个月很稳定. 另外为了防止主机ip地址更新频 ...