吹静静

欢迎QQ交流:592590682

1.什么是守护式容器

  • 能够长期运行
  • 没有交互式会话
  • 适合运行应用程序和服务

2.以守护形式运行容器

运行交互式容器时以Ctrl+P Ctrl+Q 来退出容器,此时容器还在后台继续运行,我们可以通过docker attach [name] 来重新进入容器

[root@aliyun ~]# docker start -i cjj01
root@4f38551cf3cf:/#    // Ctrl+P Ctrl+Q 退出
[root@aliyun ~]# [root@aliyun ~]# docker ps // 可以查看正在运行的容器 CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 4f38551cf3cf ubuntu "/bin/bash" 31 minutes ago Up 57 seconds cjj01 [root@aliyun ~]# docker attach cjj01 root@4f38551cf3cf:/#
  • -t:在新容器内指定一个伪终端或终端。

  • -i:允许你对容器内的标准输入 (STDIN) 进行交互。

 

 

3.使用run命令启动守护式容器

[root@aliyun ~]# docker run --name cjj02 -d ubuntu /bin/sh -c "while true; do echo hello world; sleep 1; done"
74fb89116dac4410bd268c92a3c2a9507430c49f3e61795142cad9ffed565837
[root@aliyun ~]# docker logs cjj02  // 查看容器内的标准输出
hello world
hello world
hello world
hello world
hello world
hello world
hello world
hello world
hello world
hello world
hello world
hello world
hello world
hello world
hello world
hello world
hello world
[root@aliyun ~]# 

在输出中,我们没有看到期望的"hello world",而是一串长字符

74fb89116dac4410bd268c92a3c2a9507430c49f3e61795142cad9ffed565837

这个长字符串叫做容器ID,对每个容器来说都是唯一的,我们可以通过容器ID来查看对应的容器发生了什么。

首先,我们需要确认容器有在运行,可以通过 docker ps 来查看

[root@aliyun ~]# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
74fb89116dac        ubuntu              "/bin/sh -c 'while..."   2 minutes ago       Up 2 minutes                            cjj02

CONTAINER ID:容器ID

NAMES:自动分配的容器名称

4.停止容器

docker stop [容器名]

docker kill [容器名]

[root@aliyun ~]# docker stop cjj02
cjj02

 5.查看运行中容器的进程

[root@aliyun ~]# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
74fb89116dac        ubuntu              "/bin/sh -c 'while..."   25 minutes ago      Up 12 seconds                           cjj02
[root@aliyun ~]# docker top cjj02
UID                 PID                 PPID                C                   STIME               TTY                 TIME                CMD
root                9045                9028                0                   17:38               ?                   00:00:00            /bin/sh -c while true; do echo hello world; sleep 1; done
root                9090                9045                0                   17:39               ?                   00:00:00            sleep 1
[root@aliyun ~]# 

6.在运行中的容器中启动新的进程

exec 命令

[root@aliyun ~]# docker top cjj02
UID                 PID                 PPID                C                   STIME               TTY                 TIME                CMD
root                9045                9028                0                   17:38               ?                   00:00:00            /bin/sh -c while true; do echo hello world; sleep 1; done
root                9090                9045                0                   17:39               ?                   00:00:00            sleep 1
[root@aliyun ~]# docker exec -i -t cjj02 /bin/bash
root@74fb89116dac:/#  // Ctrl+P Ctrl+Q 退出
[root@aliyun ~]# docker top cjj02
UID                 PID                 PPID                C                   STIME               TTY                 TIME                CMD
root                9045                9028                0                   17:38               ?                   00:00:00            /bin/sh -c while true; do echo hello world; sleep 1; done
root                13786               13768               0                   18:56               pts/1               00:00:00            /bin/bash
root                13867               9045                0                   18:57               ?                   00:00:00            sleep 1

 

posted on 2019-09-24 19:06  吹静静  阅读(1345)  评论(0编辑  收藏  举报