天天看点

Docker笔记1 基础概念和镜像

基础概念

开发环境deepin linux 15.11。安装docker之后,执行命令:

sudo usermod -aG docker $USER_NAME
           

让docker和当前用户在一个组中,可以每次不用执行sudo命令了。

三个核心的概念:

  • 镜像:类似虚拟机的镜像,一个只读模板。比如linux镜像等
  • 容器:轻量级的沙箱,基于容器创建的一个运行实例
  • 仓库:docker存放镜像文件的场所

容器是镜像的一个运行时的状态,镜像是静态的,容器是动态的。

docker的很多思想参考了git和github,可以 对比着来理解

Docker镜像

docker容器运行时,需要从本地获取对应的镜像文件。若果没有,则去默认仓库下载。我们可以自定义仓库的位置。

docker获取对应的镜像文件:

image

是镜像的名字,

NAME

是在远程仓库中镜像的名字,

TAG

是对应的标签,类似git上的tag。不指定tag会默认拉去

latest

版本,在服务端不建议这么做。更加详细的

pull

命令可以参考有关的手册。

使用

images

命令可以查看对应的

docker

信息。一个实例:

docker pull zookeeper
docker images
           

之后终端显示:

Docker笔记1 基础概念和镜像
  • REPOSITORY

    :镜像所在仓库
  • TAG

    :对应的

    TAG

    号,类似git中的

    tag

  • IMAGE ID

    :镜像的唯一标志,就像我们git每次提交都会有对应的一个编
  • CREATED

    :镜像的最后更新时间
  • SIZE

    :镜像的大小

我们可以使用

tag

命令给我们本地的镜像打一个

tag

,比如:

docker tag zookeeper:latest myzookeeper;latest
           

使用

inspect

查看详细的信息,比如:

docker inspect zookeeper:latest
           

docker镜像由多个层组成,可以使用

history

命令查看层的信息,比如:

docker history zookeeper:lastest
           

使用

search

命令搜索镜像,比如:

docker search zookeeper
           

具体参数参考手册

使用

rmi

或者

image rm

命令删除镜像,比如:

docker rmi zookeeper:latest
docker image rm zookeeper:latest
           

后者

tag

号可以替换成

id

使用

prune

命令清理遗留的临时镜像文件,比如:

docker prune
           

基于已有的容器创建,基本的命令格式是:

比如,执行命令:

docker [container] commit -m "create container example" -a "erick" zookeeper:latest myZookeeper:0.1
           

也可以使用模板文件导入镜像,比如:

cat ubuntu-18.04-x86_64-minimal.tar.gz | docker import - ubuntu:18.04
           

使用Dockerfile可以基于某个父镜像创建新镜像。比如:

FROM debian:stretch-slim

LABEL version="1.0" maintainer="docker user <[email protected]>"

RUN apt-get update && \
    apt-get install -y python3 && \
    apt-get clean &&
    rm -rf /var/lib/apt/lists/*
           

可以使用

save

load

命令导出和加载镜像。

docker save -o ubuntu_18.04.tar ubuntu:18.04  # 导出镜像
docker load -i ubuntu_18.04.tar # 加载镜像到本地的docker
docker loac < ubuntu_18.04.tar # 同上
           

可以使用

docker push

命令上传到指定仓库,具体可以参考手册。

总结

docker的镜像是一个静态的文件,而且有不同的版本,这就类似于git的不同版本那样,docker的镜像是docker的基础,需要理清基本概念。