docker系列四之docker镜像与容器的经常使用命令

docker镜像与容器的经常使用命令html

一.概述linux

    docker的镜像于容器是docker中两个相当重要的概念,首先给各位读者解释一下笔者对于这两个概念的理解。镜像,咱们从字面意思上看,镜子里成像,咱们人站在镜子面前,在镜子中会呈现一个完整的咱们(包括咱们的着装、表情、发型等等)。那么在软件领域的镜像是指对数据按照必定的格式的一个完整的拷贝;容器是镜像运行时的实体,好比说镜像是个类,当没有被加载的时候,它是存放在咱们的硬盘上的,而容器是对象,对象只有在程序运行的时候才会被建立,而且一个类能够建立N多个对象,对应到咱们的镜像与容器,一个镜像能够用于建立多个容器,每一个容器运行在各自的namespace中间。docker

二.镜像的操做json

  在本节笔者只会粗略的说一下镜像,本文的重点在于讲解容器,由于容器必定要用到镜像,全部咱们又不得不提。后续会有专门的篇章来介绍镜像。centos

2.1 镜像仓库的配置服务器

    所谓的镜像仓库就是镜像集中存放的位置,docker默认的镜像仓库地址是 https://hub.docker.com,因为该地址服务器不在内地,访问的速度可能会有必定的影响。因此咱们会常常将docker默认的镜像仓库换成阿里巴巴或者163的镜像仓库地址,以便加快咱们的访问速度,本小节咱们以阿里巴巴的镜像仓库为例为你们讲解。post

     A.注册阿里云帐户,地址为:https://account.aliyun.com/login/login.htm                阿里云

                                                                 

     B.进入到阿里云控制台,选择“容器镜像服务”spa

                                                           

     C.进入到“镜像加速器”,在右侧会出现“加速器地址”以及如何配置加速器地址3d

                                                          

     D.若是你按照笔者《docker系列三之docker的安装》来安装docker,在 /etc/docker/目录下是没有 daemon.json文件的,全部你要进入到 /etc/docker/ 目录下执行 touch  daemon.json  命令建立 daemon.json文件,以下图所示:

                                                               

     E.在新建立的daemon.json文件中加入以下内容

{
  "registry-mirrors": ["https://zbhswmwr.mirror.aliyuncs.com"]
}

     F.执行以下命令

sudo systemctl daemon-reload                  #从新加载守护进程
sudo systemctl restart docker                 #重启docker

2.2 docker的信息和帮助命令 

docker -v       #查看docker的版本信息
docker info     #查看docker的基本信息,例如多少镜像,多少个容器等
docker help    #查看docker命令

2.3 docker镜像的基本命令

       A.查看docker本地有多少镜像:docker images 或者 docker image ls 

                                                            

      B.拉取镜像仓库的某个镜像:docker pull 镜像名:tag,例如:docker pull hello-world:linux

                                                              

     C.只查看镜像的ID: docker images -aq

                                                             

       D.删除一个镜像: docker rmi 镜像名[:tag]  或者  docker rmi 镜像ID    注: 若是本地镜像文件镜像名惟一,能够不用加tag

                                                             

三.容器的基本命令

    A. 器的启动:docker run 镜像名:tag   

                                              

        B.查看正在运行的容器:docker container ls 或者 docker ps 或者 docker ps -n 2

                                                              

   说明:docker ps -n 2表示查看最近运行或者运行过的两个容器。

        C.查看全部的容器,包括已经中止了的容器:docker container ls -a 或者 docker ps -a

                                                              

         D.以交互的方式启动容器,例如咱们启动一个centos容器:docker run -i -t centos 

                                                          

         注:-t的是宿主机分配一个终端,并将该终端绑定到标准的输入上;-i让容器的标准输入保持打开状态。两者都是联合在一块儿使用的。

         若是以上述的方式启动centos容器,那么咱们如何回到咱们的宿主机呢?有两种方式:

                      a. 执行 exit 命令,该命令会关闭容器,而后退出。

              b.按住ctrl + p + q, 容器不关闭,只是退出。

          E.之后台进程的方式启动容器:docker run -d centos    

                                                               

         细心的你必定会发现,咱们以守护进程的方式启动容器后,容器却已经退出了(status为Exited)。缘由是由于docker容器启动后必需要有一个前台进程,说白了就是一直要有事情干,那么怎么能让他有事干了,咱们能够开启一个一直挂起的命令,例如:top tail,不然就会自动退出。那么有什么解决方法呢?其实这个问题解决的方法笔者搜集到三种(都是在网上查找的):

  a.以交互的方式启动容器,而后经过ctrl + p + q 不关闭容器退出容器,这种方式在上面已经给你们提到过:

docker run -it centos 

  b.经过一个死循环间歇性的不停的输出一个字符串 :

docker run -d centos /bin/sh -c "while true;do echo hello world;sleep 2;done"

       c.经过咱们上面提到过的top命令的方式开启一个前台进程,让容器有事情干:

docker run -d centos /usr/bin/top -b

     F.容器的中止,容器的中止有两种方式:1.docker stop 容器ID;2.docker kill 容器ID。方式一是一种平滑、优雅的方式关闭容器;方式二是暴力的方式关闭容器。

                                                             

     G.删除容器:docker rm [-f] 容器ID。-f表示强制删除,正在运行的容器用该命令。

                                                              

     H.查看容器的日志:docker logs -t -f 容器ID。-t是显示日志的时间,-f是监视日志的增加。

                                                              

     I.从新进入已经退出的容器:docker attach 容器ID 

                                                             

          J.不进入到容器,直接经过命令操做容器:docker exec 容器ID ls -l /   #查看容器中根目录下有哪些目录或者文件

                                                              

相关文章
相关标签/搜索