一、什么是容器?
容器是一种轻量级,可移植,可将应用程序进行打包的技术。让应用程序在不同的地方以相同的环境运行。
Docker 每运行镜像文件,就会产生一个容器对象。也就是说容器对象就是镜像的一个实例。
容器具备一定的生命周期, 最基本的查看命令: docker ps 命令 可以查看正在运行的容器, docker ps -a 可以查看所有的容器
二、容器和虚拟机的异同点
相同点:
- 容器和虚拟机一样,都会对物理硬件资源进行共享使用
- 容器和虚拟机一样,有相似的生命周期(创建,运行,暂停,关闭等等)
- 容器中或虚拟机中都可以安装各种应用,如redis,mysql,nginx,django应用等,也就是说,对容器的操作其实和对虚拟机(操作系统)的操作是一样的。
- 容器和虚拟机创建之后,会存储在宿主机中
不同点:
- 虚拟机的创建,启动和关闭都是基于一个完整的操作系统。而虚拟机就是一个完整的操作系统。而容器直接运行在linux的内核之上,本质上容器就是一系列进程的集合。
- 容器是轻量级的,虚拟机是重量级的。容器的创建,启动,关闭需要的资源更少,速度更快。虚拟机的创建,启动,关闭相当于一个操作系统的创建,启动,关闭,需要的资源更多,速度更慢
三、容器常用命令
命令 | 描述 |
docker create | 创建一个新容器 docker create --help 查看详细用法 格式: docker create [OPTIONS] IMAGE [COMMAND] [ARG...] 例子:docker -ti --name my-container ubuntu bash -t :表示分配一个终端 -i :表示interactive, 打开STDIN --name :表示给容器起名(这里叫my-container),如果没指定就随机生成 这条命令的作用是从ubuntu镜像中创建ubuntu容器,然后打开bash |
docker start | 启动一个或者多个容器 格式:docker start [OPTIONS] CONTAINER [CONTAINER...] 例子:docker start -ai 2598593d89de -a : 表示将当前shell的 STDOUT/STDERR 连接到容器上 -i : 将当前shell的 STDIN连接到容器上 2598593d89de 指的是容器的id |
docker run | 利用镜像创建一个容器并启动: 相当于create+run命令 格式:docker run [OPTIONS] IMAGE [COMMAND] [ARG...] 例子:docker run -ti ubuntu bash -t :表示分配一个终端 -i :表示interactive, 打开STDIN docker run --rm -d ubuntu ps -A --rm :表示容器退出运行后,自动删除容器 -d: 在后台运行容器并打印出容器ID |
docker attach | 将当前终端的STDIN、STDOUT、STDERR绑定到正在运行的容器的主进程上实现连接 格式:docker attach [OPTIONS] CONTAINER |
docker exec | 在容器中运行一个命令 例子:docker exec -ti 2598593d89de bash 命令参数: -d, --detach 后台运行命令 |
docker pause | 暂停一个或多个处于运行状态的容器 格式:docker pause CONTAINER [CONTAINER...] |
docker unpause | 取消一个或多个处于暂停状态的容器,恢复运行 格式:docker unpause CONTAINER [CONTAINER...] |
docker stop | 关闭一个或多个处于暂停状态或者运行状态的容器 格式:docker stop [OPTIONS] CONTAINER [CONTAINER...] 例子:docker stop -t 5 2598593d89de -t 5: 表示5秒后关闭容器, 默认是10秒后关闭容器 在5秒之内终止docker stop的执行,容器的关闭就会被撤销 |
dokcer kill | 强制并立即关闭一个或多个处于暂停状态或者运行状态的容器 格式:docker kill [OPTIONS] CONTAINER [CONTAINER...] 和docker stop 的区别: 前提知识:Linux其中两种终止进程的信号是:SIGTERM和SIGKILL docker stop 会先发出SIGTERM信号给进程,告诉进程即将会被关闭, 然后在-t指定的时间后发出SIGKILL信号关闭容器。 docker kill 直接发出SIGKILL信号关闭容器。 |
docker restart | 重启一个或多个处于运行状态、暂停状态、关闭状态或者新建状态的容器 格式:docker restart [OPTIONS] CONTAINER [CONTAINER...] |
docker rm | 删除一个或多个容器 格式:docker rm [OPTIONS] CONTAINER [CONTAINER...] -f 强行删除容器(会使用 SIGKILL信号) |
docker inspect | 查看本地一个或多个容器的详细信息 格式:docker inspect [OPTIONS] CONTAINER [CONTAINER...] |
docker logs | 查看容器的日志信息 格式:docker logs [OPTIONS] CONTAINER |
docker rename | 修改容器的名称 格式:docker rename CONTAINER NEW_NAME |
容器的生命周期图示如下:
参考内容: https://docs.docker.com/engine/reference/commandline/image/