容器:容器是一种轻量级、可移植、并将应用程序进行打包的技术,使应用程序可以在不同的地方以相同的方式运行。本质就是镜像文件运行后的实例,具有一定的生命周期。
容器的生命周期如下:
1、相似或相同点:
2、不同点:
(1)创建docker create
# 命令格式:docker create [OPTIONS] IMAGE [COMMAND] [ARG...] # OPTIONS: -t, --tty 分配一个伪TTY,也就是分配虚拟终端 -i, --interactive 即使没有连接,也要保持STDIN打开 --name 为容器起名,如果没有指定将会随机产生一个名称 # 命令参数(COMMAND\ARG): COMMAND 表示容器启动后,容器会执行该命令命令,如ps、ls 等命令 ARG 表示执行 COMMAND 时需要提供的一些参数,如ps 命令的 aux、ls命令的-a等等 # 案例: [root@192 ~]# docker create --name=hello hello-world ps -A 6b72d911e4aad66bcd088b6f0fe07c306db94322065507fc446a2cecd26bd4d9 docker create -ti --name test-container2 centos /bin/bash
(2)容器启动 docker start
# 命令格式: docker start [OPTIONS] CONTAINER [CONTAINER...] #OPTIONS: -a, --attach 将当前shell的 STDOUT/STDERR 连接到容器上 -i, --interactive 将当前shell的 STDIN连接到容器上
参数说明:
(1)交互式方式创建容器
(2)守护式方式创建容器,也就是挂后台
[root@192 ~]# docker run -di --name=python1 python:3.6 21030b865834a84f29d7dd536f1b4d937b4256e081ad98a0542eb76af54d9609
docker ps #查看正在运行的容器 docker ps -a # 查看所有容器 docker ps -l #查看最后一次运行的容器 # -f 是筛选的指定的容器 docker ps -f status=exited # 查看停止的容器
# -----------容器删除------------ docker rm 容器名字/容器ID # -f 强制删除 -v 同时删除绑定在容器上的数据卷 # -----------容器重启---------------- docker restart 容器名字/ID 参数 -t , --time int 重启前,等待的时间,单位秒,默认是10s
# --------容器暂停---------- docker pause 容器名字/ID #容器暂停 docker unpause 容器名字/ID # 容器取消暂停 # ---------容器关闭---------- docker stop 容器名字/ID # 参数 -t, --time int 关闭前等待的时间,单位秒,默认是10s # ---------容器终止---------- docker kill 容器名字/ID # 参数 -s ,--signal string 指定发送给容器的关闭信号,默认是kill信号 #----------socker kill 和socker stop的区别-------- ‘‘‘ 1、kill 是直接发送SIGKILL信号关闭容器,可以通过参数-s修改发出的信号 2、stop 是先发出SIGTERM信号给进程,告诉进程即将会被关闭,在-t指定的等待时间过了之后,将会立即发出SIGKILL信号,直接关闭容器 3、stop在等待时间内,如果终止等待,则容器没有关闭,而kill是无法撤销的 ‘‘‘
扩展知识点:
linux的两种终止进程的信号:SIGTERM和SIGKILL
SIGKILL信号:立即终止进程,不进行清理和暂存工作,该信号无法被阻塞、忽略、处理,也就是一发出就无法停止,它可以杀死任何进程
SIGTERM信号:程序终结信号,它可以被阻塞和终止,程序在退出前可以保存工作或清理临时文件等。
(1) 查看容器详细信息
docker container inspect 容器名字/ID # 参数:-f, --format string 利用特定Go语言的format格式输出结果 # -s, --size 显示总大小
(2)查看容器日志信息
docker logs 【参数】 容器名字/ID ‘‘‘ 参数 --details 显示日志的额外信息 -f, --follow 动态跟踪显示日志信息 --since string 只显示某事时间节点之后的 --tail string 显示倒数的行数(默认全部) -t, --timestamps 显示timestamps时间 --until string 只显示某事时间节点之前的 # 注意:容器日志中记录的是容器主进程的输出STDOUT\STDERR ‘‘‘
(3)容器重命名
docker rename 容器名字/ID 新的容器名 [root@192 ~]# docker rename 21030 python3
(1) 容器连接
将当前终端的STDIN、STDOUT、STDERR绑定到正在运行的容器的主进程上实现连接
docker attach [options] 容器名字/ID # 参数:--no-stdin 不绑定STDIN
例子:
[root@192 ~]# docker attach --no-stdin e181da [root@e181da14a5da /]# [root@192 ~]# docker attach e181da [root@e181da14a5da /]#
(2)容器中执行新命令
docker exec [options] 容器名字/ID 新的命令 ‘‘‘ 参数 -d, --detach 后台运行命令 -i, --interactive 即使没连接容器,也将当前的STDIN绑定上 -t, --tty 分配一个虚拟终端 -w, --workdir string 指定在容器中的工作目录 -e, --env list 设置容器中运行时的环境变量 ‘‘‘
注意事项:容器必须要有夯住的命令,不然它不会一直运行,如果是我们自己制作的镜像,运行容器的时候,必须要有个可以夯住的命令
原文:https://www.cnblogs.com/nq31/p/14406402.html