docker 基础命令

1:查看镜像
sudo docker search ubuntu

2:拉取镜像

$ sudo docker pull ubuntu # 获取 ubuntu 官方镜像 $ sudo docker images # 查看当前镜像列表 

3 运行镜像

$ sudo docker run -i -t ubuntu:14.04 /bin/bash
  • docker run - 运行一个容器
  • -t - 分配一个(伪)tty (link is external)
  • -i - 交互模式 (so we can interact with it)
  • ubuntu:14.04 - 使用 ubuntu 基础镜像 14.04
  • /bin/bash - 运行命令 bash shell
  •  
  • 注: ubuntu 会有多个版本,通过指定 tag 来启动特定的版本 [image]:[tag]$ sudo docker ps # 查看当前运行的容器, ps -a 列出当前系统所有的容器 CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 6c9129e9df10 ubuntu:14.04 /bin/bash 6 minutes ago Up 6 minutes cranky_babbage

查询容器
docker ps -a

CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES
d1412927d331        redis:3.2           "docker-entrypoint.s…"   2 minutes ago       Up 2 minutes        0.0.0.0:6379->6379/tcp   dazzling_leakey

删除容器
docker rm d1412927d331

查询镜像
docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
redis               3.2                 e2e6164a20de        6 hours ago         76MB
nginx               1.13                ae513a47849c        2 months ago        109MB

删除镜像
docker rmi e2e6164a20de

进入容器
docker exec -it d1412927d331 /bin/bash


sudo docker ps  查看容器

$ sudo docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
572a98ee09bd        nginx               "/bin/bash"         21 hours ago        Up 21 hours         80/tcp              romantic_galileo    

停止容器:

sudo docker stop 572a98ee09bd

启动容器:

sudo docker start 572a98ee09bd

重启容器:

sudo docker restart 572a98ee09bd


在使用Docker创建了容器之后,大家比较关心的就是如何进入该容器了,其实进入Docker容器有好几多种方式,这里我们就讲一下常用的几种进入Docker容器的方法。

进入Docker容器比较常见的几种做法如下:

  • 使用docker attach
  • 使用SSH
  • 使用nsenter
  • 使用exec

一、使用docker attach进入Docker容器

  Docker提供了attach命令来进入Docker容器。

 

  接下来我们创建一个守护态的Docker容器,然后使用docker attach命令进入该容器。

           $ sudo docker run -itd ubuntu:14.04 /bin/bash 

          然后我们使用docker ps查看到该容器信息,接下来就使用docker attach进入该容器

           $ sudo docker attach 44fc0f0582d9  

      可以看到我们已经进入到该容器中了。

 

  但在,使用该命令有一个问题。当多个窗口同时使用该命令进入该容器时,所有的窗口都会同步显示。如果有一个窗口阻塞了,那么其他窗口也无法再进行操作。

因为这个原因,所以docker attach命令不太适合于生产环境,平时自己开发应用时可以使用该命令。

二、使用SSH进入Docker容器

  在生产环境中排除了使用docker attach命令进入容器之后,相信大家第一个想到的就是ssh。在镜像(或容器)中安装SSH Server,这样就能保证多人进入

容器且相互之间不受干扰了,相信大家在当前的生产环境中(没有使用Docker的情况)也是这样做的。但是使用了Docker容器之后不建议使用ssh进入到Docker容

器内。关于为什么不建议使用,请参考如下文章:

为什么不需要在 Docker 容器中运行 sshd

三、使用nsenter进入Docker容器

  在上面两种方式都不适合的情况下,还有一种比较方便的方法,即使用nsenter进入Docker容器。关于什么是nsenter请参考如下文章:

https://github.com/jpetazzo/nsenter

在了解了什么是nsenter之后,系统默认将我们需要的nsenter安装到主机中

如果没有安装的话,按下面步骤安装即可(注意是主机而非容器或镜像)

具体的安装命令如下:

  1. $ wget https://www.kernel.org/pub/linux/utils/util-linux/v2.24/util-linux-2.24.tar.gz  
  2. $ tar -xzvf util-linux-2.24.tar.gz  
  3. $ cd util-linux-2.24/  
  4. $ ./configure --without-ncurses  
  5. $ make nsenter  
  6. $ sudo cp nsenter /usr/local/bin  

安装好nsenter之后可以查看一下该命令的使用。

senter可以访问另一个进程的名称空间。所以为了连接到某个容器我们还需要获取该容器的第一个进程的PID。可以使用docker inspect命令来拿到该PID。

docker inspect命令使用如下:

  1. $ sudo docker inspect --help   

inspect命令可以分层级显示一个镜像或容器的信息。比如我们当前有一个正在运行的容器

 

 

可以使用docker inspect来查看该容器的详细信息。

  1. $ sudo docker inspect 44fc0f0582d9  

 

 

由其该信息非常多,此处只截取了其中一部分进行展示。如果要显示该容器第一个进行的PID可以使用如下方式

  1. $ sudo docker inspect -f {{.State.Pid}} 44fc0f0582d9  

 

 

 

在拿到该进程PID之后我们就可以使用nsenter命令访问该容器了。

  1. $ sudo nsenter --target 3326 --mount --uts --ipc --net --pid  
  1. $ sudo nsenter --target 3326 --mount --uts --ipc --net --pid  

其中的3326即刚才拿到的进程的PID

 

 1004  [2018-10-11 15:26:44]sudo docker ps
 1005  [2018-10-11 15:27:05]sudo docker inspect sudo docker inspect sudo docker inspect
 1006  [2018-10-11 15:27:20]sudo docker inspect 572a98ee09bd
 1007  [2018-10-11 15:31:33]sudo docker inspect -f {{.State.Pid}}  572a98ee09bd
 1008  [2018-10-11 15:32:55]sudo nsenter--target 15167 --mount --uts --ipc --net --pid
 1009  [2018-10-11 15:33:18]sudo nsenter --target 15167 --mount --uts --ipc --net --pid


docker events : 从服务器获取实时事件

语法

docker events [OPTIONS]

OPTIONS说明:

  • -f :根据条件过滤事件;

  • --since :从指定的时间戳后显示所有事件;

  • --until :流水时间显示到指定的时间为

  • 显示docker 2016年7月1日后的所有事件。

  •  

  • $ sudo docker events --since="1539100800"

[devadmin@dev-web005 www]$ sudo docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
572a98ee09bd        nginx               "/bin/bash"         22 hours ago        Up 31 minutes       80/tcp              romantic_galileo    
[devadmin@dev-web005 www]$ sudo docker top 572a98ee09bd
UID                 PID                 PPID                C                   STIME               TTY                 TIME                CMD
root                15167               54501               0                   15:26               pts/5               00:00:00            /bin/bash
[devadmin@dev-web005 www]$ 
 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

fish_study_csdn

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值