对docker的一点认识和理解

初次使用docker的一点认识

一、docker的原理机制

  1. 镜像(Image):类似于虚拟机中的镜像,是一个包含有文件系统的面向Docker引擎的只读模板。任何应用程序运行都需要环境,而镜像就是用来提供这种运行环境的。例如一个Ubuntu镜像就是一个包含Ubuntu操作系统环境的模板,同理在该镜像上装上Apache软件,就可以称为Apache镜像。
  2. 容器(Container):类似于一个轻量级的沙盒,可以将其看作一个极简的Linux系统环境(包括root权限、进程空间、用户空间和网络空间等),以及运行在其中的应用程序。Docker引擎利用容器来运行、隔离各个应用。容器是镜像创建的应用实例,可以创建、启动、停止、删除容器,各个容器之间是是相互隔离的,互不影响。注意:镜像本身是只读的,容器从镜像启动时,Docker在镜像的上层创建一个可写层,镜像本身不变。
  3. 仓库(Repository):类似于代码仓库,这里是镜像仓库,是Docker用来集中存放镜像文件的地方。注意与注册服务器(Registry)的区别:注册服务器是存放仓库的地方,一般会有多个仓库;而仓库是存放镜像的地方,一般每个仓库存放一类镜像,每个镜像利用tag进行区分,比如Ubuntu仓库存放有多个版本(12.04、14.04等)的Ubuntu镜像。

二、docker的简单用法

  1. 镜像

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    #列出所有镜像
    docker images #或者
    docker images ls
    #查找某个镜像是否存在
    docker search XXX
    #拉取/下载镜像
    docker pull [IMAGE_NAME]:[TAG] #例如
    docker pull mysql:latest
    #删除镜像
    docker rm container_name/container_id#先删除基于该镜像的容器
    docker rmi image_name/image_id
    #在操作后的镜像基础上的容器打包成一个镜像
    docker commit -m "ubuntu with python" -a
    #镜像其他指令
    docker save -o ubuntu.tar ubuntu:python # 保存镜像, -o也可以是--output
    docker load -i ubuntu.tar # 加载镜像, -i也可以是--input



  2. 容器

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    #利用镜像创建运行一个容器
    #-i和-t。前者表示打开并保持stdout,后者表示分配一个终端(pseudo-tty)。此时如果使用exit退出,则容器的状态处于Exit,而不是后台运行。如果想让容器一直运行,而不是停止,可以使用快捷键 ctrl+p ctrl+q 退出,此时容器的状态为Up。
    docker run -it ubuntu /bin/bash
    docker run -d ubuntu /bin/bash #后台运行
    #在操作后的镜像基础上的容器打包成一个镜像
    docker commit -m "ubuntu with python" -a "tdcqzk" 容器ID tdcqzk/ubuntu:python
    #查看所有容器
    docker ps -a
    #删除容器
    docker rm container_name/container_id
    #启动、停止、重启容器命令:
    docker start container_name/container_id
    docker stop container_name/container_id
    docker restart container_name/container_id
    docker attach container_name/container_id #进入后台运行的容器
  3. 仓库

    1
    2
    3
    4
    5
    #拥有DockerHub账号密码基础上
    #登录
    docker login#然后按照提示输入账号密码
    #推送自己的镜像到DockerHub
    docker push tdcqzk/ubuntu:python#这里的tdcqzk要和登陆时的用户名一样

三、docker的用途

  1. 快速搭建一个开发环境
  2. 封装开发环境以备后用
-------------本文结束感谢您的阅读-------------