标签:bash 语言 接收 恢复 一个 连接 区别 follow 轻量
容器(Container)
容器是一种轻量级、可移植、并将应用程序进行的打包的技术,使应用程序可以在几乎任何地方以相同的方式运行 Docker将镜像文件运行起来后,产生的对象就是容器。容器相当于是镜像运行起来的一个实例。
容器具备一定的生命周期。
另外,可以借助docker ps命令查看运行的容器,如同在linux上利用ps命令查看运行着的进程那样。
通俗的讲 docker 运行一个镜像,这个镜像就会生成一个进程,这个进程就被成为容器。(进程就是资源管理的集合)
Docker 容器与虚拟机相同点
运行一个镜像
docker run --rm -dti ubuntu:16.04 cd /var/lib/docker/containers docker ps
Docker 容器与虚拟机不同点
注意:容器并不是虚拟机,但它们有很多相似的地方
docker 虚拟机
虚拟机的生命周期
docker 容器的生命周期
作用:
命令格式:
docker create [OPTIONS] IMAGE [COMMAND] [ARG...]
命令参数(OPTIONS):
查看更多
https://docs.docker.com/engine/reference/commandline/create/#options
命令参数(COMMAND\ARG):
查看使用帮助
docker create --help
可以看到必填的参数是 IMAGE ,假如 创建一个 centos 的容器 docker create centos
如果我们不指定参数, 他就会使用 centos 默认的参数, 具体查看如下
docker inspect centos
创建一个 centos 的镜像
docker create centos ls -a docker ps -a
查看使用帮助
docker rm -h
查看正在运行的容器
docker ps -a
根据 NAMES和 ID 进行删除 一个或多个 , 加上参数 -f 表示强制删除(针对正在运行的)
docker rm zhang 0ac 1c1 ded
作用:
命令格式:
命令参数(OPTIONS):
创建一个容器
docker create --name test-centos centos ls -a docker ps -a
启动刚刚创建的容器
docker start 1dd
可以看到这时容器的状态是 Exited 并不是我们期望的 runing 状态 这时因为我们在创建容器的时候使用的命令参数是 ls -a ,这条命令是瞬间就执行完成,进程执行结束,所以容器退出了
但是并没有打印出 ls -a 的执行结果 ,查看 docker start 的用法
docker start -h
在上面我们可以看到 可选参数 -a 可以把 标准的输入和错误信息显示出来,再次启动一个容器
docker start 1dd -a
创建一个容器执行 python 命令
docker create --name python centos python docker start python -a
发现并没有向我们在终端上出现的如下交互
出现以上的原因是我们在创建容器的时候,没有为其指定一个终端 -t 和 标准的输入 -i
docker create --name python_new -ti centos python docker start python_new -ai
这时就可以输入和输出了
作用:
命令格式:
命令参数(OPTIONS):
查看更多
https://docs.docker.com/engine/reference/commandline/run/#options
命令参数(COMMAND\ARG):
运行一个容器
docker run centos ls -a
可以看到 docker run 等价于 docker create + docker start -a
需要提供终端和标准输入加上 -ti 参数即可
docker run -ti centos python
docker run 与 docker create + docker start
docker run -dti centos python
可以看到加上 -d 后这个容器是在后台挂起的
作用:
命令格式:
命令参数(OPTIONS):
命令演示
docker stop -h
后台运行一个 centos 的镜像
docker run -dti centos python docker ps -a
3s 后 关闭这个容器,不加 -t 参数默认是10 s
docker stop -t 3 342
docker kill -h
作用:
命令格式:
命令参数(OPTIONS):
命令演示
docker kill 342
docker stop和docker kill的区别
前提知识点:
Linux其中两种终止进程的信号是:SIGTERM和SIGKILL
SIGKILL信号:无条件终止进程信号。进程接收到该信号会立即终止,不进行清理和暂存工作。该信号不能被忽略、处理和阻塞,它向系统管理员提供了可以杀死任何进程的方法。
SIGTERM信号:程序终结信号,可以由kill命令产生。与SIGKILL不同的是,SIGTERM信号可以被阻塞和终止,以便程序在退出前可以保存工作或清理临时文件等。
docker stop 会先发出SIGTERM信号给进程,告诉进程即将会被关闭。在-t指定的等待时间过了之后,将会立即发出SIGKILL信号,直接关闭容器。
docker kill 直接发出SIGKILL信号关闭容器。但也可以通过-s参数修改发出的信号。
因此会发现在docker stop的等过过程中,如果终止docker stop的执行,容器最终没有被关闭。而docker kill几乎是立刻发生,无法撤销。
此外还有些异常原因也会导致容器被关闭,比如docker daemon重启、容器内部进程运行发生错误等等“异常原因”。
docker pause -h
作用:
命令格式:
命令参数(OPTIONS):
命令演示
docker pause 342
docker unpause -h
作用:
命令格式:
命令参数(OPTIONS):
命令演示
docker unpause 342
docker restart -h
作用:
命令格式:
命令参数(OPTIONS):
命令演示
docker restart -t 1 342
docker container inspect -h
作用:
命令格式:
命令参数(OPTIONS):
命令演示
docker container inspect -f "{{ json .NetworkSettings.Networks.bridge }}" 342
docker logs -h
作用:
命令格式:
命令参数(OPTIONS):
注意:
docker logs 输出的是COMMAND 中命令的执行信息
命令演示
docker logs 342
docker rename -h
作用:
命令格式:
命令参数(OPTIONS):
docker rename 342 centos
作用:
命令格式:
命令参数(OPTIONS):
退出后,当前的容器会变成 Exited 状态
命令演示
docker attach d77
docker exec -h
作用:
命令格式:
命令参数(OPTIONS):
绑定的是容器中的子进程,所以执行完退出的是容器中的子进程,当前的容器并不会退出,这也是和 attach 的最主要的区别
命令演示
在后台运行 一个命令,在把其给删除
docker exec -dti 342 bash docker exec 342 kill -9 100
总结
标签:bash 语言 接收 恢复 一个 连接 区别 follow 轻量
原文地址:https://www.cnblogs.com/crazymagic/p/10673433.html