docker基本概念

  1. 镜像(Image)

  2. 容器(Container)

  3. 仓库(Repository)


Docker镜像

Docker 镜像是一个特殊的文件系统,除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的一些配置参数(如匿名卷、环境变量、用户等)。镜像不包含任何动态数据,其内容在构建之后也不会被改变。


Docker 容器


镜像(Image)和容器(Container)的关系,就像是面向对象程序设计中的 类 和 实例 一样,镜像是静态的定义,容器是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。容器的实质是进程,但与直接在宿主执行的进程不同,容器进程运行于属于自己的独立的 命名空间。因此容器可以拥有自己的 root 文件系统、自己的网络配置、自己的进程空间,甚至自己的用户 ID 空间。容器内的进程是运行在一个隔离的环境里,使用起来,就好像是在一个独立于宿主的系统下操作一样。这种特性使得容

器封装的应用比直接在宿主运行更加安全。也因为这种隔离的特性,很多人初学Docker 时常常会把容器和虚拟机搞混。


Docker Registry

镜像构建完成后,可以很容易的在当前宿主上运行,但是,如果需要在其它服务器上使用这个镜像,我们就需要一个集中的存储、分发镜像的服务,Docker Registry就是这样的服务。

一个 Docker Registry 中可以包含多个仓库(Repository);每个仓库可以包含多个标签(Tag);每个标签对应一个镜像。


docker安装

我虚拟机系统是centos7.1,步骤如下:

yum update

cat >/etc/yum.repos.d/docker.repo <<EOF
[dockerrepo]
name=Docker Repository
baseurl=https://mirrors.aliyun.com/centos/7/extras/x86_64/Packages/
enabled=1
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
EOF

yum -y install docker


docker 指定国内镜像仓库

curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s 

service docker restart


docker常用命令


1.docker version(显示 Docker 版本信息)



2.docker info(显示 Docker 系统信息,包括镜像和容器数)



3.docker search(从 Docker Hub 中搜索符合条件的镜像)

    使用:docker search centos

    参数: 

        -f --filter filter 过滤展示信息    

        例子:docker search --filter stars=30 centos

        --no-trunc 可显示完整的镜像描述


4.docker pull(从 Docker Hub 中拉取或者更新指定镜像)

    使用:docker pull centos:latest

    参数: 

        -a 拉取所有 tagged 镜像 。


5.docker images(列出本地所有镜像)

    使用:docker images

    参数: 

        -a 列出所有镜像(含过程镜像)

        -f 过滤镜像,如: docker images -f dangling=true 只列出满足dangling=true 条件的镜像,一般可以展示的镜像

        --no-trunc 可显示完整的镜像ID;

        -q 仅列出镜像ID。


6.docker ps(列出所有运行中容器)

    使用:docker ps -a

    参数: 

        -a 列出所有容器(含沉睡镜像);

        -f 过滤容器,如: docker ps -a -f exited=0

        --no-trunc 显示完整的容器ID;

        -q 仅列出容器ID;


7.docker rmi(从本地移除一个或多个指定的镜像,默认该镜像必须不能被使用)

    参数: 

        -f 强行移除该镜像,即使其正被使用;


8.docker rm(删除一个容器)

    参数: 

        -f 强行移除该容器,即使其正在运行

        -l 移除容器间的网络连接,而非容器本身;

        -v 移除与容器关联的空间。


9.docker start|stop|restart(启动、停止和重启一个或多个指定容器。)


10.docker kill(杀死一个或多个指定容器进程。)


11.docker save(将指定镜像保存成 tar 归档文件, docker load 的逆操作。保存后再加载(saved-loaded)的镜像不会丢失提交历史和层,可以回滚。)

    使用:docker save mynginx > /root/mynginx.tar


12.docker load(从 tar 镜像归档中载入镜像, docker save 的逆操作。保存后再加载(saved-loaded)的镜像不会丢失提交历史和层,可以回滚。)

    使用:docker load < /root/mynginx.tar


13.docker export(将指定的容器保存成 tar 归档文件, docker import 的逆操作。导出后导入(exported-imported))的容器会丢失所有的提交历史,无法回滚。)

    使用:docker export nginx-01 > export.tar


14.docker import(从归档文件(支持远程文件)创建一个镜像, export 的逆操作,可为导入镜像打上标签。导出后导入(exported-imported))的容器会丢失所有的提交历史,无法回滚。)

    使用:docker import < export.tar


15.docker push(将镜像推送至远程仓库,默认为 Docker Hub 。)


16.docker logs(获取容器运行时的输出日志)

   参数: 

        -f 跟踪容器日志的最近更新;

        -t 显示容器日志的时间戳;

        --tail="10" 仅列出最新10条容器日志。


17.docker run(启动一个容器,在其中运行指定命令。最常用命令,没有之一)

    使用: 

        1.docker run -d --name mynginx -p 80:80 -v /root:/wwwroot mynginx

        2.docker run -it mynginx /bin/bash


    参数: 

        -a stdin 指定标准输入输出内容类型,可选 STDIN/
STDOUT / STDERR 三项;

        -d 后台运行容器,并返回容器ID;

        -i 以交互模式运行容器,通常与 -t 同时使用;

        -t 为容器重新分配一个伪输入终端,通常与 -i 同时使用;

        --name="nginx-lb" 为容器指定一个名称;

        -e username="ritchie" 设置环境变量;

        -p 宿主端口:容器端口 设置宿主容器端口映射

        -v 宿主路径:容器路径 设置宿主容器数据目录映射

        --net="bridge" 指定容器的网络连接类型,支持 bridge / host / none


18.docker exec(在运行的容器中执行命令)

    使用:docker exec -it mynginx /bin/bash


19.docker commit(提交修改)

    此命令会在后面详细使用