关于docker:Dokcer容器

2次阅读

共计 4303 个字符,预计需要花费 11 分钟才能阅读完成。

一、什么是容器

容器是一种轻量级、可移植、并将应用程序进行打包的技术,使应用程序能够在简直任何中央以雷同的形式运行。docker 运行一个镜像,这个镜像就会生成一个过程,这个过程就被称为容器

二、容器和虚拟机比照

相同点 不同点
容器和虚拟机一样,都会对物理硬件资源 (主机) 进行共享应用 虚拟机是一个残缺的操作系统,容器是间接运行在宿主机的内核上
容器和虚拟机的生命周期比拟类似(创立、运行、暂停、敞开等) 容器是轻量级的,虚拟机是重量级
容器中或虚拟机中都能够装置各种利用,如 mysql、nginx 等 在给定的硬件上能运行更多的容器
同虚拟机一样,容器创立后,会存储在宿主机上:linux 上位于 /var/lib/docker/containers 下

三、虚拟机和 docker 容器的生命周期

虚拟机的生命周期 镜像的生命周期

四、容器的操作

4.1、容器创立

  • 作用:利用镜像创立出一个 created 状态的待启动容器
  • 命令格局:

    • 英文下的:docker create [options] IMAGE [COMMAND] [ARG…]
    • 译:docker create [参数] 镜像 [容器启动后,须要在容器中执行的命令] [执行命令时提供的参数]
  • 参数:

    • –name 为容器起名,没有则随机生成一个名称
  • 更多的用法:docker create –help
# 创立一个 tomcat 容器且默认运行命令为 ls -a
docker create --name tomcat_test tomcat:latest ls -a
# 查看以后运行 docker 容器
docker ps -a

4.2、容器的删除

  • 作用:删除历史版本的一些不再应用或须要保留的容器,缩小磁盘占用
  • 命令格局:

    • docker rm [OPTION] IMAGE_NAME[IMAGE_NAMES…] IMAGE_ID[IMAGE_IDS…]
  • 参数:

    • -f,强制删除运行中的容器
    • IMAGE_NAME 示意一个或者多个容器名称
    • IMAGE_ID 示意一个或者多个容器 ID
  • 更多的用法:docker rm –help/-h
# 1. 看查正在运行的容器
docker ps -a
# 2. 依据 NAMES 和 ID 删除 一个或多个容器
docker rm -f  85e  python_test

4.3、容器的启动

  • 作用:将一个或多个解决 创立状态或敞开状态 的容器启动起来
  • 命令格局:

    • docker start [OPTIONS] CONTAINER [CONTAINER…]
  • 参数:

    • -a,–attach 将以后 shell 的 STDOUT/STDERR 连贯到容器上
    • -i,–interactive 将以后 shell 的 STDIN 连贯到容器上
  • 更多的用法:docker start –help/-h

eg:

# 创立一个容器
docker create --name python_test  python:3.8.0  ls -a
# 查看容器
docker ps -a

# 启动刚创立的容器
docker start 3a3

剖析:启动后发现容器的状态是 Exited 也就是退出状态,并不是冀望的 running 状态。这是因为在
创立容器的时候应用的命令 ls -a,这条命令是霎时就执行实现,过程执行完结,所以容器也
就间接退出了。同时也没有打印出 ls - a 的执行后果
# 退出可选参数 -a,将规范输出和错误信息显示进去,再次启动容器
docker start  3a3 -a

4.4、容器创立并启动

  • 作用:利用镜像创立并启动一个容器
  • 命令格局:docker run [options] IMAGE [COMMAND] [ARG…]
  • 参数:

    • -t,–tty 调配一个伪 TTY,也就是调配虚构终端
    • -i,–interactive 即便没有连贯,也要放弃 STDIN 关上
    • –name 为容器起名,如果没有指定将会随机产生一个名称
    • -d,–detach 在后盾运行容器并打印出容器 ID
    • –rm 当容器退出运行后,主动删除容器
    • command 示意容器启动后,须要在容器中执行的命令
    • ARG 示意执行 command 时所须要提供的一些参数
  • 更多用法:docker run –help

eg:

#  运行一个容器
 docker run --name python_test python:3.8.0 ls -a
# 查看容器
dokcer ps -a

留神:docker run 等价于 docker create + docker start -a

  • docker run 和 docker create + docker start

    • docker run 相当于 docker create + docker start -a 前台模式
    • docker run -d 相当于 docker create + docker start 后盾模式
# 创立一个名为 pytho_test 的容器并置于后盾运行
 docker run -dti --name python_test python:3.8.0 python

4.5、容器敞开

  • 作用:敞开一个或者多个处于 暂停状态或者运行状态 的容器
  • 命令格局:docker stop [OPTIONS] CONTAINER [CONTAINER..]
  • 参数:

    • -t,–time int 敞开前,期待的工夫,单位秒(默认 10s)
  • 更多用法:docker stop –help/-h

eg:

# 运行一个后盾运行的容器
docker run -dti --name test_02 centos:latest
# 查看运行容器
docker ps -a

# 3s 后敞开这个容器,不加 -t 参数默认为 10s
docker stop -t 3 deb

4.6、容器终止

  • 作用:强制并立刻敞开一个或多个处于 暂停状态或者运行状态 的容器
  • 命令格局:docker kill [OPTIONS] CONTAINER [CONTAINER…]
  • 参数:

    • -s,–signal string 指定发送给容器的敞开信息
  • 更多用法:docker kill -h/–help
# 强行终止正在运行的容器
docker kill 049

  • docker stop 和 docker kill 的区别

       linux 中有两种终止过程的信号:SIGTERM 和 SIGKILL
    SIGKILL 信号 SIGTERM 信号 docker stop docker kill
    无条件终止过程信号。过程接管到该信号会立刻终止,不进行清理和暂存工作。该信号不能被疏忽、解决和阻塞,它向系统管理员提供了能够杀死任何过程的办法。 程序终结信号,能够由 kill 命令产生。与 SIGKILL 不同的是,SIGTERM 信号能够被阻塞和终止,以便程序在退出前能够保留工作或清理临时文件等 docker stop 会先收回 SIGTERM 信号给过程,通知过程行将会被敞开,在 - t 指定的等待时间之后,将会收回 SIGKILL 的信号,间接敞开容器 docker kill 间接收回 SIGKILL 的信息敞开容器。但也能够通过 - s 参数批改收回的信号。因而会发现 dock stop 的期待过程中,如果终止 dock stop 的执行,容器最终是不会敞开。而 docker kill 简直是立即产生,无奈撤销

留神:此外还有些异样起因也会导致容器被敞开,比方 docker daemon 重启、容器外部进运行产生谬误等等 ” 异样起因

4.7、容器的暂停

  • 作用:暂停一个 / 多个处于 运行状态 的容器
  • 命令格局:docker pause CONTAINER[CONTAINER..]
  • 更多用法:docker pause -h/–help

eg:

# 依据容器名称:test_02 暂停容器
docker pause test_02

4.7、容器勾销暂停

  • 作用:暂停一个 / 多个处于 暂停状态 的容器,复原运行
  • 命令格局:docker unpause CONTAINER[CONTAINER..]
  • 更多用法:docker unpause -h/–help

eg:

# 依据容器名称:test_02 勾销容器暂停,复原启动状态
docker unpause test_02

4.8、容器重启

  • 作用:重启一个或多个处于 运行状态、暂停状态、敞开状态或新建状态 的容器,该命令相当于 stop 和 start 的联合
  • 命令格局:docker restart [OPTIONS] CONTAINER[CONTAINER…]
  • 参数:

    • -t,-time int 重启前,期待的工夫,单位秒(默认 10s)实则是敞开前期待的工夫
  • 更多用法:docker restart -h/–help

eg:

# 依据容器 ID 重启容器
docker restart -t 3 049

4.9、容器信息查看

  • 作用:查看本地一个 / 对个容器的详情信息
  • 命令格局:

    • docker inspect [OPTIONS] CONTAINER[CONTAINER…]
    • docker container inspect [OPTIONS] CONTAINER[CONTAINER…]
  • 参数:

    • -f,–format string 利用特定 Go 语言的 format 格局输出后果
    • -s,–size 显示总大小
  • 更多用法:docker inspect -h/–help

eg:

# 查看容器的运行状态信息
docker container inspect -f "{{json .State.Status}}" 049
# 查看容器残缺信息
docker inspect 049

4.10、容器日志信息

  • 作用:查看容器的日志信息
  • 命令格局:docker logs [OPTIONS] CONTAINER
  • 参数:

    • –details 显示日志的额定信息
    • -f,–follow 动静跟踪显示的日志信息
    • –since string 只显示某工夫节点之后的
    • –tail string 显示倒数的行数(默认全副)
    • -t,–timestamps 显示 timestamps 工夫
    • –until string 只显示某工夫节点之前的
  • 更多用法:docker logs -h/–help

4.11、容器重命名

  • 作用:批改容器的名称
  • 命令格局:docker rename CONTAINER NEW_NAME

4.12、容器运行时操作

4.12.1、容器连贯
  • 作用:将终端的 STDIN、STDOUT、STDERROR 绑定到正在运行的容器的主过程上实现连贯
  • 命令格局:docker attach [OPTIONS] CONTAINER
  • 参数:–no-stdin 不绑定 STDIN
  • 更多用法:docker attach -h/–help
4.12.2、容器中执行新命令
  • 作用:在容器中运行一个命令,容器必须时运行状态
  • 命令格局:docker exec [OPTIONS] CONTAINER COMMAND [ARG…]
  • 参数:

    • -d,–detach 后盾运行命令
    • -i,–interactive 即便没连贯容器,也将以后的 STDIN 绑上
    • t,–tty 调配一个虚构终端
    • -w,–workdir string 指定在容器中的工作目录
    • -e,–env list 设置容器中运行的环境变量

eg:

# 容器必须是运行状态
# 执行 ls -a
docker exec -i 049 ls -a

正文完
 0