Docker image存放在registry中,并且是只读的。以它为模版,我们可以创建自己的container。container是image的运行的实例,相同的镜像可以创建出多个不同的容器,就像编程思想中的类与对象的关系。

查看容器对应的镜像id 根据镜像名称查找容器_docker

    image可以变得很大,因此我们需要对它进行分层以减小它的体积,每一层都会对image添加额外的功能和定制。

    Docker中管理image常用的命令:

  • docker search - 在registry中查找名字中包含特定关键字的image,例如:docker search apache
  • docker pull - 下载image到本地,例如:docker pull ubuntu:16.04
  • docker images - 列出所有设备本地registry中的image
  • docker rmi - 删除一个image,例如:docker rmi ubuntu:14:04
  • docker history - 显示image的历史记录,例如:docker history  apacheweb

查看容器对应的镜像id 根据镜像名称查找容器_查看容器对应的镜像id_02

 

    Docker container是image的一个运行实例。需要注意的是,container内部生成的数据的生命周期是和container绑定在一起的,如果我们停止容器,数据将会丢失。当然,Docker中有一些方法可以持久化数据,比如使用volume。

    Docker中管理container常用的命令:

  • docker run -  创建并启动容器
  • docker create - 创建一个容器但不启动它,返回容器ID作为输出
  • docker ps - 列出正在运行的容器
  • docker stop - 停止容器
  • docker start - 启动容器
  • docker restart - 重启容器
  • docker rm - 删除容器
  • docker kill - 向容器发送SIGKILL信号
  • docker attach - 连接正在运行的容器并返回其交互式的shell
  • docker logs - 列出容器中发生的事件
  • docker top - 列出容器中正在运行的进程

 

    下面列举一些使用案例:



docker run -d --name dbserver somerepo/mysql



    基于somerepo/mysql镜像创建并启动一个名为dbserver的容器,并在后台运行它。



docker create -t -i centos



    创建一个基于centos镜像的容器,并返回它的容器ID。



docker ps



    列出所有运行的容器并显示其详细信息。



docker stop d962431b81cb



    停止容器ID为d962431b81cb的容器。



docker start d962431b81cb



    启动容器ID为d962431b81cb的容器。



docker kill dbserver



    向名称为dbserver的容器发送SIGKILL信号。



docker top dbserver



    列出名称为dbserver的容器中正在运行的进程。

 

    请注意:

  • 在使用容器ID作为参数的命令中可以使用容器ID或容器名称。
  • 容器中可能会包含恶意代码,因此请确保镜像的来源和运行的程序可信。
  • 可以使用Ctrl + P + Q退出容器,而不会杀死它,然后使用docker attach命令再次连接到容器。
  • 当stop/kill容器时,容器中生成的任何数据都将丢失。
  • 最好在创建容器时使用--name选项给容器命名,这会使得后续执行容器相关命令时更加地方便。